【发布时间】:2011-08-17 21:16:45
【问题描述】:
如果所有项目都通过测试,我有一个函数应该返回 true。如果只有一项失败,则该函数应返回 false。如果集合中没有项目,则该函数应返回 false。代码如下:
private bool TestAll()
{
bool finalResult = false;
bool itemResult = false;
foreach (var item in Items)
{
itemResult = Test(item);
if (!finalResult && itemResult)
finalResult = true;
else if (finalResult && !itemResult)
finalResult = false;
}
return finalResult;
}
如何仅使用一个bool 变量将逻辑简化为一个 if 语句?
【问题讨论】:
-
是否需要运行所有测试,或者一旦其中一个出现
false,您可以跳过其余的测试吗? -
@Jon:所有测试都应该通过,即使一个或全部失败。这就是为什么我没有使用
break。 -
顺便说一句,您发布的代码有问题:只要最后一个通过,如果任意数量的测试失败,它将返回
true。