Was IEqualityComparer<T> introduced for the following reasons?
<p>1) Are the reasons why <code>IEqualityComparer&lt;T&gt;</code> was introduced:</p>

<p>a) so we would be able to compare objects (of particular type) for equality in as many different ways as needed</p>

<p>b) and  by having a standard interface for implementing a custom equality comparison, chances are that much greater that third party classes will accept this interface as a parameter and by that allow us to inject into these classes equality comparison behavior via objects implementing <code>IEqualityComparer&lt;T&gt;</code></p>

<p>2) I assume <code>IEqualityComparer&lt;T&gt;</code> should not be implemented on type <code>T</code> that we're trying to compare for equality, but instead we should implement it on helper class(es)?</p>

<p>Thank you</p>
