2010-04-13 14 views
26

sei A eine Klasse mit einigen Mitgliedern als X, y, z:Was ist das Standardverhalten der Equals-Methode?

Class A { 
    int x; 
    int y; 
    String z; 
    ... 
} 

A ist ein Objekt, damit er die "gleich" Funktionen definiert in Objekt erbt. Was ist das Standardverhalten dieser Funktion? Prüft es die Gleichheit der Mitglieder oder prüft es auf Gleichheit?

Antwort

42

Die Standardimplementierung von Equals Referenz Gleichheit für Referenztypen und bitweise Gleichheit für Werttypen unterstützt. Referenzgleichheit bedeutet, dass die Objektreferenzen, die sind, sich auf dasselbe Objekt beziehen. Bitweise Gleichheit bedeutet, dass die Objekte , die verglichen werden, die gleiche binäre Darstellung haben.

http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx

+3

Dinge sind eigentlich mehr für Werttypen kompliziert: es Gleichheit Vergleich nicht aways biwise ist. Siehe diese Frage für Details http://stackoverflow.com/q/8315656/129073 – Gebb

+0

Zeichenfolge ist speziell. string.equals ist bitweise gleich, während string der Referenztyp ist. –

+4

@WillYu Nicht bitweise Gleichheit. Es testet, ob die Zeichen identisch sind. Bitweise Gleichheit würde bedeuten, dass alle .NET-Metadaten (z. B. ob die Zeichenfolge interniert ist oder nicht) identisch sind. Es ist auch nicht speziell (in dieser Hinsicht), es überschreibt gerade Equals und überlädt den (in) Gleichheitsoperator. Die Standardimplementierung dafür wäre immer noch Referenzgleichheit. – Aidiakapi

3

es als Referenz überprüft, wenn Sie außer Kraft setzen gleich

Verwandte Themen