ValueType.Equals(Object) Método

Definición

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

Boolean

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.

Se aplica a