title: C#: How does the static object.Equals check for equality?
body: <p>Say you have two different classes where each have their own implementation of Equals; which one is used? What if only one of them have one? Or none of them? Are any of the following lines equivalent?</p>
  
  <pre><code>object .Equals( first, second )
  first .Equals( second )
  second .Equals( first )
  </code></pre>
  
  <p>I'm guessing that the first two might be equivalent, but I don't really have a clue.</p>
  
  <p>What does it really do?</p>