IEqualityComparer.Equals(Object, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Determina si los objetos especificados son iguales.
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
Parámetros
- x
- Object
Primer objeto que se va a comparar.
- y
- Object
Segundo objeto que se va a comparar.
Devoluciones
true
si los objetos especificados son iguales; en caso contrario, false
.
Excepciones
x
y y
son de tipos diferentes y ninguno puede controlar comparaciones con el otro.
Ejemplos
En el ejemplo de código siguiente se muestra la implementación de un sin distinción entre mayúsculas y minúsculas IEqualityComparer. En este ejemplo, el CaseInsensitiveComparer.Compare método se usa para determinar si dos objetos son iguales, en función del proporcionado 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 .
Notas a los implementadores
El Equals(Object, Object) método es reflexivo, simétrico y transitivo. Es decir, devuelve true
si se usa para comparar un objeto con sí mismo; true
para dos objetos x
y y
si es true
para y
y x
; y true
para dos objetos x
y z
si es true
para x
y y
también true
para y
y z
.
Las implementaciones son necesarias para asegurarse de que si el Equals(Object, Object) método devuelve true
para dos objetos x
y y
, el valor devuelto por el GetHashCode(Object) método para x
debe ser igual al valor devuelto para y
.