IEqualityComparer.Equals(Object, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa, czy określone obiekty są równe.
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
Parametry
- x
- Object
Pierwszy obiekt do porównania.
- y
- Object
Drugi obiekt do porównania.
Zwraca
true
jeśli określone obiekty są równe; w przeciwnym razie , false
.
Wyjątki
x
i są różne typy, y
a żadna z nich nie może obsługiwać porównań z innymi.
Przykłady
Poniższy przykład kodu przedstawia implementację bez uwzględniania IEqualityComparerwielkości liter. W tym przykładzie metoda służy do określania CaseInsensitiveComparer.Compare , czy dwa obiekty są równe, na podstawie podanego CultureInfoelementu .
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
Uwagi
Zaimplementuj tę metodę, aby zapewnić dostosowane porównanie równości dla obiektów.
Uwagi dotyczące implementowania
Metoda Equals(Object, Object) jest refleksywna, symetryczna i przechodnia. Oznacza to, że zwraca true
wartość , jeśli jest używana do porównywania obiektu z samym obiektem; true
dla dwóch obiektów i , oraz true
true
y
x
y
dla dwóch obiektów z
x
x
, a także true
x
dla i , a także true
dla z
y
i .y
Implementacje są wymagane, aby upewnić się, że jeśli Equals(Object, Object) metoda zwraca true
dla dwóch obiektów x
, a y
następnie wartość zwrócona przez GetHashCode(Object) metodę x
musi być równa wartości zwracanej dla y
elementu .