简化布尔逻辑

Xaq*_*ron 0 c# logic boolean

我有一个函数,如果所有项都通过了测试,它应该返回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

Mat*_*ott 6

您可以使用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)