IEqualityComparer.GetHashCode(Object) 方法

定义

返回指定对象的哈希代码。Returns a hash code for the specified object.

public:
 int GetHashCode(System::Object ^ obj);
public int GetHashCode (object obj);
abstract member GetHashCode : obj -> int
Public Function GetHashCode (obj As Object) As Integer

参数

obj
Object

Object,将为其返回哈希代码。The Object for which a hash code is to be returned.

返回

Int32

指定对象的哈希代码。A hash code for the specified object.

例外

obj 的类型为引用类型,objnullThe type of obj is a reference type and obj is null.

示例

下面的代码示例演示如何实现不区分大小写 IEqualityComparerThe following code example demonstrates the implementation of a case-insensitive IEqualityComparer. 在此示例中, GetHashCode 方法返回类型提供的哈希代码 ObjectIn this example, the GetHashCode method returns the hash code provided by the Object type.

ref class myCultureComparer : IEqualityComparer
{
private:
    CaseInsensitiveComparer^ myComparer;

public:
    myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer::DefaultInvariant;
    }

    myCultureComparer(CultureInfo^ myCulture)
    {
        myComparer = gcnew CaseInsensitiveComparer(myCulture);
    }

    virtual bool Equals(Object^ x, Object^ y) 
    {
        if (myComparer->Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    virtual int GetHashCode(Object^ obj)
    {
        return obj->ToString()->ToLower()->GetHashCode();
    }
};
class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        return myComparer.Compare(x, y) == 0;
    }

    public int GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}
Public Class myCultureComparer
    Implements IEqualityComparer

    Dim myComparer As CaseInsensitiveComparer

    Public Sub New()
        myComparer = CaseInsensitiveComparer.DefaultInvariant
    End Sub

    Public Sub New(ByVal myCulture As CultureInfo)
        myComparer = New CaseInsensitiveComparer(myCulture)
    End Sub

    Public Function Equals1(ByVal x As Object, ByVal y As Object) _
        As Boolean Implements IEqualityComparer.Equals

        Return myComparer.Compare(x, y) = 0
    End Function

    Public Function GetHashCode1(ByVal obj As Object) _
        As Integer Implements IEqualityComparer.GetHashCode
        Return obj.ToString().ToLower().GetHashCode()
    End Function
End Class

注解

实现此方法可为对象提供自定义的哈希代码,对应于方法提供的自定义相等性比较 EqualsImplement this method to provide customized hash codes for objects,corresponding to the customized equality comparison provided by the Equals method.

实施者说明

实现需要确保如果 Equals(Object, Object) 方法 true 为两个对象 x 和返回 y ,则的方法返回的值 GetHashCode(Object) x 必须等于为返回的值 yImplementations are required to ensure that if the Equals(Object, Object) method returns true for two objects x and y, then the value returned by the GetHashCode(Object) method for x must equal the value returned for y.

适用于

另请参阅