title: Equals(item, null) or item == null
body: <p>Is code that uses the <a href="http://msdn.microsoft.com/en-us/library/w4hkze5k.aspx" rel="noreferrer">static Object.Equals</a> to check for null more robust than code that uses the == operator or <a href="http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx" rel="noreferrer">regular Object.Equals</a>? Aren't the latter two vulnerable to being overridden in such a way that checking for null doesn't work as expected (e.g. returning false when the compared value <em>is</em> null)?</p>
  
  <p>In other words, is this:</p>
  
  <pre><code>if (Equals(item, null)) { /* Do Something */ }
  </code></pre>
  
  <p>more robust than this:</p>
  
  <pre><code>if (item == null) { /* Do Something */ }
  </code></pre>
  
  <p>I personally find the latter syntax easier to read. Should it be avoided when writing code that will handle objects outside the author's control (e.g. libraries)? Should it always be avoided (when checking for null)? Is this just hair-splitting?</p>