我在下面编写代码来检查C#中表单中组件的输入数据。
此代码调用一些函数,每个函数都返回一个布尔值。如果check为Ok,则函数返回false,否则返回true。
如果我的用户没有正确完成任何输入,则第一个代码检查函数返回true,并跳过其他函数调用。
即使返回true,我如何避免跳过其他函数调用?
命名约定:
码
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);
答案 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