Will Dictionary<TKey, TValue> use TKey.Equals and TKey.GetHashCode?
<p>I have implemented a Dictionary as follows:</p>

<pre><code>Dictionary&lt;ErrorHashKey, ErrorRow&gt; dictionary;
</code></pre>

<p>I have defined <code>Equals()</code> and <code>GetHashCode()</code> in the <code>ErrorHashKey</code> class. I am currently writing up some documentation for the project, and came accross this from the <a href="http://msdn.microsoft.com/en-us/library/ms132151%28v=vs.90%29.aspx" rel="nofollow">IEqualityComparer Interface doc</a>:</p>

<blockquote>
  <p>Dictionary requires an equality implementation to
  determine whether keys are equal. You can specify an implementation of
  the IEqualityComparer generic interface by using a constructor that
  accepts a comparer parameter; if you do not specify an implementation,
  the default generic equality comparer EqualityComparer.Default is
  used. If type TKey implements the System.IEquatable generic
  interface, the default equality comparer uses that implementation.</p>
</blockquote>

<p>I am not doing anything that the documentation specifies (or at least I don't think I am). I do not pass a comparer in the constructor parameter nor do I create an <code>EqualityComparer.Default</code> comparer.</p>

<p>Is the <code>System.IEquatable&lt;T&gt; generic interface</code> automatically implemented in every class created? Should I be defining an implementation of <code>IEqualityComparer&lt;T&gt;</code>?</p>
