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.

Исключения

Параметры x и y имеют разные типы и не могут сравниваться друг с другом.

Примеры

В следующем примере кода демонстрируется реализация без учета 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 для двух объектов, а y также y true xдля двух объектовx, а также true для двух объектов x и z, если он предназначен true x, а y также true для и z.y

Реализации необходимы, чтобы гарантировать, что если Equals(Object, Object) метод возвращается true для двух объектов x , а yзатем значение, возвращаемое методом GetHashCode(Object) , x должно быть равно значению, возвращаемого для y.

Применяется к