|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Object.Equals-Methode (Object)
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Parameter
- obj
- Typ: System.Object
Das Objekt, das mit dem aktuellen Objekt verglichen werden soll.
Rückgabewert
Typ: System.BooleanDie beiden Objekte sind vom gleichen Typ. Wie das folgende Beispiel zeigt, entspricht ein Byte Objekt, das einen Wert von 12 hat nicht einem
Int32 Objekt, das ebenfalls einen Wert von 12 hat, da die beiden Objekte verschiedene Laufzeittypen haben.
Die Werte der öffentlichen und privaten Felder der beiden Objekte sind gleich. Im folgenden Beispiel wird die Wertgleichheit überprüft. Sie definiert eine Person-Struktur, die ein Werttyp ist, und ruft den Person-Klassenkonstruktor auf, um zwei neue Person-Objekte, person1 und person2, zu instanziieren, die denselben Wert haben. Wie die Ausgabe im Beispiel zeigt, obwohl die zwei Objektvariablen verschiedene Objekte verweisen, person1 und person2 gleich sind, da sie den gleichen Wert für das private personName Feld verfügen.
Hinweise für Aufrufer
Hinweise zur Vererbung
Object.Equals(Object) | ||
Object.Equals(Object) |
x.Equals(x) gibt true, außer in Fälle zurück, die Gleitkommatypen einschließen. Siehe ISO/IEC/IEEE 60559:2011, Informationstechnologie -- Mikroprozessor-Systeme -- Gleitkommaarithmetik. x.Equals(y) gibt den gleichen Wert wie y.Equals(x) zurück. x.Equals(y) true gibt zurück, wenn x und yNaN sind. Wenn (x.Equals(y) && y.Equals(z))true zurückgibt, gibt x.Equals(z)true zurück. Aufeinander folgende Aufrufe x.Equals(y) geben den gleichen Wert zurück, solange die Objekte, die von x und y verweisen, werden nicht geändert. x.Equals(null) gibt false zurück.
Typen, die IComparable implementieren, müssen Equals(Object) überschreiben. Typen, die Equals(Object) überschreiben, müssen GetHashCode auch überschreiben; Andernfalls funktionieren möglicherweise nicht ordnungsgemäß Hashtabellen. Wenn die Programmiersprache Operatorüberladung unterstützt und Sie den Gleichheitsoperator für einen angegebenen Typ überladen, müssen Sie die Equals(Object)-Methode auch überschreiben, um das gleiche Ergebnis wie der Gleichheitsoperator zurückzugeben. Dies hilft, sicherzustellen, dass Klassenbibliothekscode, der Equals verwendet (z ArrayList und Hashtable) in ähnlicher Weise, das mit der - Methode der Gleichheitsoperator konsistent ist, wird mithilfe von Anwendungscode verhält.
Richtlinien für Verweistypen
Erwägen Sie, Equals zu überschreiben, wenn die Semantik des Typs auf Grundlage der Tatsache ist, dass der Typ einige Werte darstellt. Referenztypen dürfen den Gleichheitsoperator i. d. R. auch dann nicht überladen, wenn sie Equals überschreiben. Wenn Sie allerdings einen Referenztyp implementieren, der Wertsemantik besitzen soll, z. B. einen Typ, der komplexe Zahlen darstellt, müssen Sie den Gleichheitsoperator überschreiben.
Richtlinien für Werttypen
Wenn Sie einen Werttyp definieren, der ein oder mehrere Felder umfasst, deren Werte Verweistypen sind, sollten Sie Equals(Object) überschreiben. Die Equals(Object) Implementierung, die von ValueType bereitgestellt wird, führt einen Vergleich auf Byteebene für Werttypen, deren Felder alle Werttypen sind, aber er verwendet Reflektion, um einen Feld-durchFeldvergleich von Werttypen auszuführen, deren Felder Verweistypen umfassen. Wenn Sie Equals und die Entwicklungssprachunterstützungsoperatorüberladung überschreiben, müssen Sie den Gleichheitsoperator überladen.
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.