ValueType.Equals(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í.
Indica si esta instancia y un objeto especificado son iguales.
public:
override bool Equals(System::Object ^ obj);
public override bool Equals (object obj);
public override bool Equals (object? obj);
override this.Equals : obj -> bool
Public Overrides Function Equals (obj As Object) As Boolean
Parámetros
- obj
- Object
Objeto que se va a comparar con la instancia actual.
Devoluciones
true
si obj
y esta instancia son del mismo tipo y representan el mismo valor; en caso contrario, false
.
Ejemplos
En el ejemplo siguiente se muestra cómo un tipo de valor Equals derivado puede invalidar el método.
public ref struct Complex
{
public:
double m_Re;
double m_Im;
virtual bool Equals( Object^ ob ) override
{
if ( dynamic_cast<Complex^>(ob) )
{
Complex^ c = dynamic_cast<Complex^>(ob);
return m_Re == c->m_Re && m_Im == c->m_Im;
}
else
{
return false;
}
}
virtual int GetHashCode() override
{
return m_Re.GetHashCode() ^ m_Im.GetHashCode();
}
};
public struct Complex
{
public double m_Re;
public double m_Im;
public override bool Equals( object ob ){
if( ob is Complex ) {
Complex c = (Complex) ob;
return m_Re==c.m_Re && m_Im==c.m_Im;
}
else {
return false;
}
}
public override int GetHashCode(){
return m_Re.GetHashCode() ^ m_Im.GetHashCode();
}
}
Public Structure Complex
Private m_Re As Double
Private m_Im As Double
Public Overloads Function Equals(ob As Object) As Boolean
If TypeOf ob Is Complex Then
Dim c As Complex = CType(ob, Complex)
Return m_Re = c.m_Re And m_Im = c.m_Im
Else
Return False
End If
End Function
Public Overloads Function GetHashCode() As Integer
Return m_Re.GetHashCode() ^ m_Im.GetHashCode()
End Function
End Structure
Comentarios
El método invalida y proporciona la implementación predeterminada de igualdad de valores para todos los ValueType.Equals(Object) tipos de valor del Object.Equals(Object) .NET Framework.
La implementación predeterminada llama Object.Equals(Object) a en cada campo de la instancia actual y y devuelve si todos los campos son obj
true
iguales.
Sugerencia
Especialmente si el tipo de valor contiene campos que son tipos de referencia, debe invalidar el Equals(Object) método . Esto puede mejorar el rendimiento y permitirle representar más estrechamente el significado de igualdad para el tipo.
Notas del entorno de Windows runtime
Cuando se llama al método en una estructura Windows Runtime, proporciona el comportamiento predeterminado para los tipos de valor que Equals no invalidan Equals . Esto forma parte de la compatibilidad que el .NET Framework proporciona para el entorno de ejecución de Windows (consulte Compatibilidad de .NET Framework con aplicaciones de Windows Store y Windows Runtime). Windows runtime no pueden invalidar , aunque se escriban con C# o Visual Basic, porque no Equals pueden tener métodos. (Además, las estructuras del entorno Windows runtime no ValueType heredan). Sin embargo, parecen tener métodos , y cuando se usan en el código de C# o Visual Basic, y el .NET Framework proporciona el comportamiento predeterminado para ToString Equals estos GetHashCode métodos.