<Type Name="IHashCodeProvider" FullName="System.Collections.IHashCodeProvider" FullNameSP="System_Collections_IHashCodeProvider" Maintainer="ecma">
  <TypeSignature Language="ILASM" Value=".class interface public abstract IHashCodeProvider" />
  <TypeSignature Language="C#" Value="public interface IHashCodeProvider" />
  <MemberOfLibrary>BCL</MemberOfLibrary>
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Docs>
    <summary>
      <para> Implemented by classes that support custom hash functions for instances of the class.</para>
    </summary>
    <remarks>
      <para>
        <block subset="none" type="note">
          <see cref="T:System.Collections.IHashCodeProvider" /> contains the <see cref="M:System.Collections.IHashCodeProvider.GetHashCode(System.Object)" /> method. The consumer of an
 object should call this method to obtain a hash code for the object using a
 custom hash function.</block>
      </para>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName="GetHashCode">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual abstract int32 GetHashCode(object obj)" />
      <MemberSignature Language="C#" Value="public int GetHashCode (object obj);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="obj" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="obj">The <see cref="T:System.Object" /> for which a hash code is to be generated.</param>
        <summary>
          <para>Generates a hash code for the specified <see cref="T:System.Object" />.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> containing the hash code for the specified <see cref="T:System.Object" />.</para>
        </returns>
        <remarks>
          <para>
            <block subset="none" type="behaviors">If <paramref name="obj" /> is <see langword="null" />, it is required that a call to
<see cref="M:System.Collections.IHashCodeProvider.GetHashCode(System.Object)" /> throw <see cref="T:System.ArgumentNullException" />.</block>
          </para>
          <para>
            <block subset="none" type="overrides">Implement
   this method to generate a better hash table
   distribution than the default method provided by the type of the <see cref="T:System.Object" /> for which the hash code is
   being generated.</block>
          </para>
          <para>
            <block subset="none" type="usage">The value returned by this method
   should not be persisted past the lifetime of the application that created the
   value. The first reason is that the hash function of a class might be
   altered to generate a better distribution, rendering any values from the old
   hash function useless. The second reason is that the default
   implementation of this class does not guarantee that the same value will be
   returned by different instances.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="obj " /> is <see langword="null" />.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
  </Members>
  <TypeExcluded>0</TypeExcluded>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.Obsolete("Please use IEqualityComparer instead.")</AttributeName>
    </Attribute>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
