Sha*_*pta 3 .net c# operators conditional-operator
我在我的代码中调用三个函数,我想验证我的一些字段.当我尝试使用下面给出的代码时.它只检查第一个值,直到它得到错误的结果.
我想要一些类似的东西,如果fisrt函数返回true,那么它也应该调用next函数,依此类推.可以使用什么代替Or运算符来执行此操作.
if (IsFieldEmpty(ref txtFactoryName, true, "Required") ||
IsFieldEmpty(ref txtShortName, true, "Required") ||
IsFieldEmpty(ref cboGodown, true, "Required"))
{ }
Run Code Online (Sandbox Code Playgroud)
编辑
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;
}
}
Run Code Online (Sandbox Code Playgroud)
请评论,这个方法是否可以使用ref变量作为参数之一.
我正在检查onSubmit事件的验证winform.
Hen*_*man 10
您可以将单个|用于OR:
if (IsFieldEmpty(ref txtFactoryName, true, "Required") |
IsFieldEmpty(ref txtShortName, true, "Required") |
IsFieldEmpty(ref cboGodown, true, "Required"))
{ }
Run Code Online (Sandbox Code Playgroud)
双管||进行短路评估,单一版本进行 |全面评估.
同样的&&和&.
请参阅MSDN参考.
对编辑的回应:
IsFieldEmpty不对txtControl进行任何更改.您可以重命名以CheckFieldEmpty进一步改进它.EP.Clear();为Ep.SetErrortxtControl, "");Ric*_*dle 10
明确你在做什么:
bool isFactoryNameEmpty = IsFieldEmpty(ref txtFactoryName, true, "Required");
bool isShortNameEmpty = IsFieldEmpty(ref txtShortName, true, "Required");
bool isGodownEmpty = IsFieldEmpty(ref cboGodown, true, "Required");
if (isFactoryNameEmpty || isShortNameEmpty || isGodownEmpty)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
(另外,我假设你需要调用所有三个函数,因为它们有副作用?在这种情况下,这IsFieldEmpty是一个非常糟糕的名字.)
你为什么需要它?我能想到的唯一原因是你的"IsFieldEmpty"函数也在对数据进行一些计算或更改,这让我很担心.名为"IsFieldEmpty"的函数实际上不应该执行任何其他操作.
在这种情况下,从可用性/可维护性的角度来看,你会更好:
SomeFieldMaintenance(ref txtFactoryName, true, "Required")
SomeFieldMaintenance(ref txtShortName, true, "Required")
SomeFieldMaintenance(ref cboGodown, true, "Required")
if (IsFieldEmpty(txtFactoryname) ||
IsFieldEmpty(txtShortName) ||
IsFieldEmpty(cboGodown))
{ }
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |