Object t = 4;
Object s = 4;
if (t == s) { // false
}
List<Object> q = new List<object>() { t };
Boolean found = q.Contains(s); // found = true!
In dem oben genannten Code bin ich nicht überrascht, t == s
zurückgeben false
; Es vergleicht Referenzen auf zwei Objekte und die Referenzen sind nicht identisch.Warum vergleicht Enthält Objekte anders als ==?
Aber ich bin überrascht, dass das Contains wahr ist; offensichtlich vergleicht es nicht nur Objektreferenzen, es ist als würde es die ungesicherten Werte von 4 und 4 vergleichen. Aber wie und warum weiß es, die Objekte zu entpacken, um sie zu vergleichen? Ich versuche die größere Spielpraxis hier zu verstehen.
Ich glaube, '==' standardmäßig auf einen Referenzvergleich von wo die 'Objekte 'sind im Speicher, und da sie zwei verschiedene Objekte sind; Sie haben zwei verschiedene Orte im Gedächtnis. Deshalb sind sie nicht '=='. –