Partager via


IEqualityComparer.Equals(Object, Object) Méthode

Définition

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.

S’applique à