IEqualityComparer.Equals(Object, Object) Yöntem

Tanım

Belirtilen nesnelerin eşit olup olmadığını belirler.

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

Parametreler

x
Object

Karşılaştırma yapılacak ilk nesne.

y
Object

Karşılaştırma yapılacak ikinci nesne.

Döndürülenler

true belirtilen nesneler eşitse; aksi takdirde , false.

Özel durumlar

x ve y farklı türlerdedir ve ikisi de diğeriyle karşılaştırmaları işleyebilir.

Örnekler

Aşağıdaki kod örneği, büyük/küçük harfe duyarsız IEqualityCompareruygulamasını gösterir. Bu örnekte, sağlanan CultureInfoöğesini temel alarak iki nesnenin CaseInsensitiveComparer.Compare eşit olup olmadığını belirlemek için yöntemi kullanılır.

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

Açıklamalar

Nesneler için özelleştirilmiş bir eşitlik karşılaştırması sağlamak için bu yöntemi uygulayın.

Uygulayanlara Notlar

Yöntem Equals(Object, Object) esnek, simetrik ve geçişlidir. Başka bir ifadeyle, bir nesneyi kendisiyle karşılaştırmak için kullanılırsa, iki nesne x için, y ve xiçin y ise true ve ve true iki nesne zx için, ve için ise xtruey ve için ve true için zy ise döndürürtrue. true

Yöntemlerin ve için iki nesne yx döndürdüğünde Equals(Object, Object)true yöntemi tarafından döndürülen değerin için döndürülen değere eşit olması gerektiğinden GetHashCode(Object) emin olmak için xyuygulamalar gereklidir.

Şunlara uygulanır