我有一个函数,如果所有项都通过了测试,它应该返回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;
}
Run Code Online (Sandbox Code Playgroud)
如何只使用一个变量将逻辑简化为一个 if语句bool?
您可以使用IEnumerable.All扩展方法来测试所有项目,这会在Test方法失败的第一个实例上失败.
private bool TestAll()
{
return Items.All(Test);
}
Run Code Online (Sandbox Code Playgroud)
如果您仍需要测试所有项目,则可以使用AND赋值运算符:
if (!Items.Any()) return false;
bool result = true;
foreach (var item in Items)
{
result &= Test(item);
}
return result;
Run Code Online (Sandbox Code Playgroud)