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?
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.
Yes, the two methods are equivalent. Using && is a shortcut to achieve the same result as using a backing variable.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With