IEqualityComparer.Equals(Object, Object) 方法

定义

确定指定的对象是否相等。

public:
 bool Equals(System::Object ^ x, System::Object ^ y);
public bool Equals (object x, object y);
public bool Equals (object? x, object? y);
abstract member Equals : obj * obj -> bool
Public Function Equals (x As Object, y As Object) As Boolean

参数

x
Object

要比较的第一个对象。

y
Object

要比较的第二个对象。

返回

Boolean

如果指定的对象相等,则为 true;否则为 false

例外

xy 的类型不同,它们都无法处理与另一个进行的比较。

示例

下面的代码示例演示了不区分大小写 IEqualityComparer的实现。 在此示例中, CaseInsensitiveComparer.Compare 该方法用于根据提供的 CultureInfo两个对象来确定两个对象是否相等。

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

注解

实现此方法可为对象提供自定义的相等比较。

实施者说明

该方法 Equals(Object, Object) 具有反射性、对称性和可传递性。 也就是说,如果用于将对象与自身进行比较,则返回true两个对象;true对于两个对象;对于两个对象true y true y xx和 z,如果true对象用于xy和 z,则true返回y该对象xz

实现需要确保该方法Equals(Object, Object)返回true两个对象x,然后y该方法x返回GetHashCode(Object)的值必须与返回y的值相等。

适用于