c# – 即使在返回true之后,在使用或运算符时调用所有3个函数
我在我的代码中调用三个函数,我想验证我的一些字段.
当我尝试使用下面给出的代码时.它只检查第一个值,直到它得到错误的结果. 我想要一些类似的东西,如果fisrt函数返回true,那么它也应该调用next函数,依此类推.可以使用什么代替Or运算符来执行此操作. if (IsFieldEmpty(ref txtFactoryName,true,"Required") || IsFieldEmpty(ref txtShortName,"Required") || IsFieldEmpty(ref cboGodown,"Required")) { } 编辑 public bool IsFieldEmpty(ref TextBox txtControl,Boolean SetErrorProvider,string msgToShowOnError) { ErrorProvider EP = new ErrorProvider(); if (txtControl.Text == string.Empty) { EP.SetError(txtControl,msgToShowOnError); return true; } else { EP.Clear(); return false; } } 请评论,这个方法是否可以使用ref变量作为参数之一. 我正在检查winform中的onSubmit事件验证. 解决方法
你可以使用单个|对于OR:
if (IsFieldEmpty(ref txtFactoryName,"Required") | IsFieldEmpty(ref txtShortName,"Required") | IsFieldEmpty(ref cboGodown,"Required")) { } 双管||正在执行short-circuit evaluation,single version |做全面评估. 见MSDN reference. 对编辑的回应: > txtControl前面不需要’ref’,删除它会对解决你的方法的批评有很大的帮助. IsFieldEmpty不对txtControl进行任何更改.您可以重命名为CheckFieldEmpty以进一步改进它.>在这个方法中创建一个ErrorProvider实例很奇怪,这样做有用吗?表格上通常应该有一个(永久)实例.您可能希望此方法独立于Form,因此只需添加一个EP作为参数.它可以替换SetErrorProvider,可以检查EP参数是否为null. O,并替换EP.Clear();与Ep.SetErrortxtControl,“”); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |