Search code examples
c#.netboolean-operations

Chaining methods with &&


I have a bunch of methods that all return a bool.

If one method returns false then there is no value in calling the following methods, especially as some of them are 'expensive' operations.

Which is the more efficient?

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

or

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

As I understand it, the 2nd form should stop evaluating as soon as one of the methods returns false, right?


Solution

  • Yes you are right. Both && and || boolean operators in c# work as short-circuit operator. It stops evaluating expression once its value is determined. It stops unnecessary execution.

    Hence return method1() && method2() && method3(); is better option in your case. If you have something in non-evaluated statement, say method3 in your case, it may lead to some side effects.

    There is this very good language independent article about short-circuit operators on Wikipedia.

    UPDATE: In C# if you want to use logical operator without short-circuit, use & and | operator instead.