同时检查严重的布尔返回值

Bli*_*ick 9 c# asp.net logic boolean-logic boolean

我有几个bool元素,我正在检查它是否返回我的假.

bool i = false;
        switch (idcount)
        {
            case 1: i = p1(); break;
            case 2: i = p1() & p2(); break;
            case 3: i = p1() & p2() & p3(); break;
            case 4: i = p1() & p2() & p3() & p4(); break;
            case 5: i = p1() & p2() & p3() & p4() & p5(); break;
            case 6: i = p1() & p2() & p3() & p4() & p5() & p6(); break;
            case 7: i = p1() & p2() & p3() & p4() & p5() & p6() & p7(); break;
            }
return i;
Run Code Online (Sandbox Code Playgroud)

我想如果p*()中的一个在任何情况下返回false,则返回false.是正确的方式还是两个错误的回报都是真的?我希望所有p*()返回true我返回true ..

Kam*_*ski 7

使用&&(逻辑和)不&(二元运算符)

喜欢:

p1() && p2();

只有当所有p*()都为真(相同&)时它才会返回true ,但请注意,如果第一个p*()将返回false,则不会计算表达式的其余部分.在&整个表达的情况下将被评估

var functions = new List<Func<bool>>();
functions.Add(p1);
functions.Add(p2);
functions.Add(p3);
functions.Add(p4);
functions.Add(p5);
functions.Add(p6);
functions.Add(p7);
return functions.Take(idcount).All(x=>x());
Run Code Online (Sandbox Code Playgroud)

尝试上面它看起来比switch语句更清晰,并应检查所有第一个idcount条目是否与switch case相同&&