我怎么能在代码中执行所有功能?

时间:2012-08-15 20:52:28

标签: c#

我在下面编写代码来检查C#中表单中组件的输入数据。

此代码调用一些函数,每个函数都返回一个布尔值。如果check为Ok,则函数返回false,否则返回true。

如果我的用户没有正确完成任何输入,则第一个代码检查函数返回true,并跳过其他函数调用。

即使返回true,我如何避免跳过其他函数调用?

命名约定:

  • 带有'txt'的变量starst是TextBox
  • 带有'mtxt'的变量星号是MaskedTextBox
  • 带有'rtxt'的变量星号是RichTextBox

bool allIsOK = false;

allIsOK = checker.txtChecker(txtcode) ;
allIsOK = allIsOK || checker.txtChecker(txtdavar); 
allIsOK = allIsOK || checker.txtChecker(txtKomakHazine);
allIsOK = allIsOK || checker.txtChecker(txtnevisande);
allIsOK = allIsOK || checker.txtChecker(txtonvan); 
allIsOK = allIsOK || checker.txtChecker(txtostadMoshaver);
allIsOK = allIsOK || checker.txtChecker(txtostadRahnama);

allIsOK = allIsOK || checker.richTextBoxChecker(rtxtmaghale);
allIsOK = allIsOK || checker.mtxtDateChecker(mtxtdefa);
allIsOK = allIsOK || checker.mtxtDateChecker(mtxttasvib);

2 个答案:

答案 0 :(得分:1)

allIsOK = allIsOK && checker.txtChecker(txtdavar); //not||

答案 1 :(得分:0)

你正在遇到表达式的短路;如果OR(||)的第一部分为真,则不需要评估第二部分。 AND(&&)有一个类似的规则,如果第一部分为假,则不评估第二部分。这是设计的,是语言的一个非常有用的特征。

对代码进行最简单的更改,以确保评估所有检查,将交换测试的顺序,将检查放在||运算符的左侧。

allIsOK = checker.txtChecker(txtcode) ;
allIsOK = checker.txtChecker(txtdavar) || allIsOK; 
allIsOK = checker.txtChecker(txtKomakHazine) || allIsOK;
// etc etc