IEqualityComparer.Equals(Object, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje, zda jsou zadané objekty stejné.
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
První objekt k porovnání
- y
- Object
Druhý objekt k porovnání
Návraty
true
jsou-li zadané objekty stejné; v opačném případě . false
Výjimky
x
a y
jsou z různých typů a ani jeden nemůže zpracovat porovnání s druhým.
Příklady
Následující příklad kódu ukazuje implementaci nerozlišující malá a velká IEqualityComparerpísmena . V tomto příkladu CaseInsensitiveComparer.Compare se metoda používá k určení, zda jsou dva objekty stejné, na základě poskytnuté 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
Poznámky
Implementujte tuto metodu, která poskytuje přizpůsobené porovnání rovnosti objektů.
Poznámky pro implementátory
Metoda Equals(Object, Object) je reflexní, symetrická a tranzitivní. To znamená, že se vrátítrue
, pokud se používá k porovnání objektu se samotným; true
pro dva objekty x
a y
pokud je true
pro y
a x
; a true
pro dva objekty x
a z
, pokud je true
pro x
a y
také true
pro a z
y
.
Implementace se vyžadují, aby se zajistilo, že pokud Equals(Object, Object) metoda vrátí true
dva objekty x
, a y
pak hodnota vrácená metodou GetHashCode(Object) musí x
být rovna hodnotě vrácené pro y
.