This is just a little note to myself to remember that assigning the result of a conditional operation (a = a && b;) is not the same as using a logical assignment operator (a &= b;).
First: The conditional operators (&&, ||) work on the boolean results of their operands – that is, the operands are evaluated as booleans and the operator performs a logical AND or a logical OR on the two boolean values.
In contrast, the logical assignment operators (&=, |=) perform bitwise AND and OR operations between the operands.
Second: The conditional operators will short-circuit, the assignment operators do not. In the statement
a = a || b;
if a initially evaluates to false, then b is not evaluated. Whereas in the statement
a |= b;
b will be evaluated whether a is true or false.
There are very few cases where the first difference is likely to matter, however, it is easy to get caught by the second difference.
Note: The null-conditional operators (?., ?[]) also short-circuit – which is what will make them useful – when/if I get upgraded to C# 6.0.