用&&链接方法
我有一堆方法都返回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中更具可读性。