title: Why is (object)0 == (object)0 different from ((object)0).Equals((object)0)?
body: <p>Why are the following expressions different?</p>
  
  <pre><code>[1]  (object)0 == (object)0 //false
  [2]  ((object)0).Equals((object)0) // true
  </code></pre>
  
  <p>Actually, I can totally understand [1] because probably the .NET runtime will <code>box</code> the integer and start comparing the references instead. But why is [2] different?</p>