用&&​​链接方法

我有一堆方法都返回bool。

如果一个方法返回false,则调用以下方法没有任何价值,特别是因为其中一些方法是“昂贵的”操作。

哪个更有效率?

bool result = method1(); if (result) result = method2(); if (result) result = method3(); return result; 

要么

 return method1() && method2() && method3(); 

据我了解,第二种forms应该在其中一种方法返回false时停止评估,对吧?

是的,你是对的。 两者都是&&和|| c#中的布尔运算符用作短路运算符。 一旦确定了其值,它就会停止计算表达式。 它停止不必要的执行。

因此return method1() && method2() && method3(); 在你的情况下是更好的选择。 如果您在非评估语句中有某些内容,例如在您的情况下使用method3,则可能会导致一些副作用。

这篇非常好的语言独立文章关于维基百科上的短路运营商。

更新:在C#中如果要使用逻辑运算符而不使用短路,请使用&和| 而是运营商。

是的,这两种方法是等价的。 使用&&是获得与使用支持变量相同结果的快捷方式。

第二个表达式被评估为false后,第二个将停止表达式评估。

虽然这两个例子在语义上都是等价的,但第二个例子在我的opionion中更具可读性。