Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 496
Stuart Hemming Avatar asked Dec 27 '22 09:12

Stuart Hemming


2 Answers

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.

like image 129
Maheep Avatar answered Jan 08 '23 12:01

Maheep


Yes, the two methods are equivalent. Using && is a shortcut to achieve the same result as using a backing variable.

like image 28
Strillo Avatar answered Jan 08 '23 12:01

Strillo