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.