title: What's the difference between IEquatable and just overriding Object.Equals()?
body: <p>I want my <code>Food</code> class to be able to test whenever it is equal to another instance of <code>Food</code>. I will later use it against a List, and I want to use its <code>List.Contains()</code> method. Should I implement <code>IEquatable&lt;Food&gt;</code> or just override <code>Object.Equals()</code>? From MSDN:</p>
  
  <blockquote>
    <p>This method determines equality by
    using the default equality comparer,
    as defined by the object's
    implementation of the
    IEquatable.Equals  method for T
    (the type of values in the list).</p>
  </blockquote>
  
  <p>So my next question is: which functions/classes of the .NET framework make use of <code>Object.Equals()</code>? Should I use it in the first place?</p>