IEqualityComparer.Equals(Object, Object) Método

Definición

Determina si los objetos especificados son iguales.Determines whether the specified objects are equal.

public:
 bool Equals(System::Object ^ x, System::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

Parámetros

x
Object

Primer objeto que se va a comparar.The first object to compare.

y
Object

Segundo objeto que se va a comparar.The second object to compare.

Devoluciones

true si los objetos especificados son iguales; en caso contrario, false.true if the specified objects are equal; otherwise, false.

Excepciones

x y y son de tipos diferentes y ninguno puede controlar comparaciones con el otro.x and y are of different types and neither one can handle comparisons with the other.

Ejemplos

En el ejemplo de código siguiente se muestra la implementación de una distinción IEqualityComparerde mayúsculas y minúsculas.The following code example demonstrates the implementation of a case-insensitive IEqualityComparer. En este ejemplo, el CaseInsensitiveComparer.Compare método se usa para determinar si dos objetos son iguales, en función del valor CultureInfode proporcionado.In this example, the CaseInsensitiveComparer.Compare method is used to determine whether two objects are equal, based on the provided 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

Comentarios

Implemente este método para proporcionar una comparación de igualdad personalizada para los objetos.Implement this method to provide a customized equality comparison for objects.

Notas a los implementadores

El Equals(Object, Object) método es reflexivo, simétrico y transitivo.The Equals(Object, Object) method is reflexive, symmetric, and transitive. Es decir, devuelve true si se usa para comparar un objeto con sí mismo; x paradosy objetos y si es true para y;x y paratrue dos objetos yx z si es true para y true x yy y también true paray y z.That is, it returns true if used to compare an object with itself; true for two objects x and y if it is true for y and x; and true for two objects x and z if it is true for x and y and also true for y and z.

Las implementaciones son necesarias para asegurarse de que Equals(Object, Object) si el true método devuelve dos x objetos yy, a continuación, el valor GetHashCode(Object) devuelto x por el método para debe ser igual al valor devuelto para y.Implementations are required to ensure that if the Equals(Object, Object) method returns true for two objects x and y, then the value returned by the GetHashCode(Object) method for x must equal the value returned for y.

Se aplica a