Cascading Equality Checks over Ands: System.Guid
<p>While looking at the difference between <code>guid.Equals(anotherGuid)</code> and <code>guid == anotherGuid</code>, I decompiled the .NET System.dll and saw something like (shortened and condensed:</p>

<pre><code>if (g._a == this._a) {
    if (g._b == this._b) {
        ...
        if (g._k == this._k) { return true; }
    } else { return false; }
} else { return false; }
</code></pre>

<p>This seems, um, odd. I would have expected code like:</p>

<pre><code>if (g._a == this._a &amp;&amp; g._b == this._b &amp;&amp; ...
</code></pre>

<p>Is there a reason they coded it the way they did, instead of the way I expected it?  What, if anything, is the difference here?</p>
