IEqualityComparer.Equals(Object, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Détermine si les objets spécifiés sont égaux.
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
Paramètres
- x
- Object
Premier objet à comparer.
- y
- Object
Deuxième objet à comparer.
Retours
true
si les objets spécifiés sont égaux ; sinon, false
.
Exceptions
x
et y
sont de types différents et aucun d'entre eux ne peut effectuer de comparaisons avec l'autre.
Exemples
L’exemple de code suivant illustre l’implémentation d’un objet qui ne respecte pas la casse IEqualityComparer. Dans cet exemple, la CaseInsensitiveComparer.Compare méthode est utilisée pour déterminer si deux objets sont égaux, en fonction du fourni 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
Remarques
Implémentez cette méthode pour fournir une comparaison d’égalité personnalisée pour les objets.
Notes pour les responsables de l’implémentation
La Equals(Object, Object) méthode est réflexive, symétrique et transitive. Autrement dit, il retourne true
s’il est utilisé pour comparer un objet avec lui-même ; true
pour deux objets x
et y
s’il est true
pour y
et x
; et true
pour deux objets x
et z
s’il est true
pour x
et y
aussi true
pour y
et z
.
Les implémentations sont nécessaires pour s’assurer que si la Equals(Object, Object) méthode retourne true
pour deux objets x
et y
, la valeur retournée par la GetHashCode(Object) méthode pour x
doit être égale à la valeur retournée pour y
.