C# System.Object.operator==()
<p>I'm tryign to get my head around the use of System.Object.operator==().</p>

<p>My Effective C# book, and the page here (<a href="http://www.srtsolutions.com/just-what-is-the-default-equals-behavior-in-c-how-does-it-relate-to-gethashcode" rel="nofollow">http://www.srtsolutions.com/just-what-is-the-default-equals-behavior-in-c-how-does-it-relate-to-gethashcode</a>), says that:</p>

<p><strong>"System.Object.operator==() will call a.Equals(b) to determine if a and b are equal".</strong></p>

<p>So with my code:</p>

<pre><code>   object a = 1;
   object b = 1;

   if(object.Equals(a, b))
   {
    // Will get here because it calls Int32.Equals(). I understand this.

   }

   if(a == b)
   {
    // I expected it to get here, but it doesn't.
   }
</code></pre>

<p>I expected (a == b) to call Int32's overriden Equals and compare values in the same way that static objet.Equals() does. What am I missing?</p>

<p>Edit: I should perhaps have added that I can see what (a == b) is testing - it's testing reference equality. I was thrown by the book which seems to suggest it will work internally much as <strong>static</strong> object.Equals(obect, object) will.</p>
