ValueType.Equals(Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
true
, wenn obj
und diese Instanz denselben Typ aufweisen und denselben Wert darstellen, andernfalls false
.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie die Equals Methode von einem abgeleiteten Werttyp außer Kraft gesetzt 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();
}
}
type Complex() =
member val m_Re = 0. with get, set
member val m_Im = 0. with get, set
override this.Equals(ob) =
match ob with
| :? Complex as c ->
this.m_Re = c.m_Re && this.m_Im = c.m_Im
| _ -> false
override this.GetHashCode() =
this.m_Re.GetHashCode() ^^^ this.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 überschreibt Object.Equals(Object) und stellt die Standardimplementierung der Wertgleichheit für alle Werttypen in der .NET Framework bereit.
Die Standardimplementierung ruft Object.Equals(Object) jedes Feld der aktuellen Instanz auf und obj
gibt zurück true
, wenn alle Felder gleich sind.
Tipp
Insbesondere wenn ihr Werttyp Felder enthält, die Referenztypen sind, sollten Sie die Equals(Object) Methode außer Kraft setzen. Dies kann die Leistung verbessern und Ihnen ermöglichen, die Bedeutung der Gleichheit für den Typ genauer darzustellen.
Hinweise für die Windows-Runtime
Wenn Sie die Equals Methode für eine Windows-Runtime Struktur aufrufen, stellt sie das Standardverhalten für Werttypen bereit, die nicht außer Kraft setzenEquals. Dies ist Teil der Unterstützung, die der .NET Framework für die Windows-Runtime bereitstellt (siehe .NET Framework Support für Windows Store Apps und Windows-Runtime). Windows-Runtime Strukturen können nicht außer Kraft setzenEquals, auch wenn sie mit C# oder Visual Basic geschrieben werden, da sie keine Methoden haben können. (Darüber hinaus erben ValueTypeStrukturen in der Windows-Runtime selbst nicht .) Sie scheinen ToStringEqualsjedoch , und GetHashCode Methoden, wenn Sie sie in Ihrem C# oder Visual Basic Code verwenden, und die .NET Framework stellt das Standardverhalten für diese Methoden bereit.