C# won’t necessarily evaluate every sub-expression in a larger expression. If knowing the value of the first operand is sufficient for knowing the value of the entire expression, the larger expression is said to be short-circuited.
When evaluating a logical AND (&&), the second operand will not be evaluated if the first operand is false. The entire expression is false.
1
| bool b1 = false && expr; // Result is false; expr never evaluated |
When evaluating a logical OR (||), the second operand will not be evaluated if the first operand is true. The entire expression is true.
1
2
| bool b1 = true || expr; // Result is true; expr never evaluated |