我有一个函数,如果所有项都通过了测试,它应该返回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;
}
如何逻辑到一个if
声明只使用一个bool
可变我简化?
做所有的测试需要运行,或者你可以跳过其余的一个,一旦他们变成'假'? – Jon 2011-05-03 16:46:22
@Jon:所有的测试都应该通过,甚至一次或全部失败。这就是为什么我没有使用'break'。 – Xaqron 2011-05-03 16:47:38
顺便说一下,你发布的代码是错误的:如果任何次数的测试失败,只要最后一次通过,它就会返回'true'。 – Jon 2011-05-03 16:48:15