ValueType.Equals(Object) Methode

Definition

Gibt an, ob diese Instanz und ein angegebenes Objekt gleich sind.

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

Parameter

obj
Object

Das Objekt, das mit der aktuellen Instanz verglichen werden soll.

Gibt zurück

Boolean

true, wenn obj und diese Instanz denselben Typ aufweisen und denselben Wert darstellen, andernfalls false.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Equals die -Methode von einem abgeleiteten Werttyp überschrieben werden kann.

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

Hinweise

Die ValueType.Equals(Object) -Methode Object.Equals(Object) überschreibt und stellt die Standardimplementierung der Wertgleichheit für alle Werttypen in der .NET Framework.

Die Standardimplementierung ruft für jedes Feld der aktuellen Instanz auf und gibt zurück, Object.Equals(Object) wenn alle Felder gleich obj true sind.

Tipp

Insbesondere wenn Ihr Werttyp Felder enthält, die Verweistypen sind, sollten Sie die -Methode Equals(Object) überschreiben. Dadurch können Sie die Leistung verbessern und die Bedeutung der Gleichheit für den Typ genauer darstellen.

Hinweise zur Windows Runtime

Wenn Sie die -Methode für eine Windows Runtime-Struktur aufrufen, wird das Standardverhalten für Werttypen Equals bereitgestellt, die nicht überschreiben. Equals Dies ist Teil der Unterstützung, die .NET Framework für die Windows Runtime bietet (siehe .NET Framework-Unterstützung für Windows Store-Appsund Windows Runtime). Windows Laufzeitstrukturen können nicht überschreiben, auch wenn sie mit C# oder Visual Basic geschrieben wurden, da sie keine Equals Methoden haben können. (Darüber hinaus erben Strukturen in der Windows Runtime selbst nicht ValueType .) Sie scheinen jedoch die Methoden , und zu haben, wenn Sie sie ToString Equals in Ihrem C#- oder Visual Basic-Code verwenden, und die .NET Framework stellt das Standardverhalten für diese GetHashCode Methoden zur Anwendung.

Gilt für