| 

.NET C# Java Javascript Exception

3
Hallo Zusammen

Folgender Code:
var x = new { A = 1, B = 2 };
var y = new { A = 1, B = 2 };

if (x == y) Console.WriteLine("P");
else Console.WriteLine("~P");

if (x.Equals(y)) Console.WriteLine("Q");
else Console.WriteLine("~Q");


Ausgabe ist: ~P,Q

Was wird bei "==" geprüft? By reference?
Und bei Equals by value?

Bin grad verwirrt :)
21.10.2009
Arade 225 5
1 Antwort
3
Hallo,

das ist ein Sonderfall der für anonyme Type gilt. Bei denen ist wie bei normalen Referenztypen das == als Referenzvergleich implementiert während Equals (sowie GetHashCode) mithilfe von Equals (GetHashCode) der Eigenschaften umgesetzt wird.

Gruss
Günther
21.10.2009
gfoidl 9,1k 3 5
1
Danke soweit, wenn ich mir Equals im Reflector anschaue, sehe ich leider keine Implementierung :( (neue Frage stellen oder meinste es reicht ein Kommentar?)
Arade 22.10.2009
1
Ich glaube ein Kommetar reicht:
Die Implementierung entspricht dem Aufruf von InternEquals und dieser führt einen Referenzvergleich durch. D.h. es wird geschaut ob die beiden Objekte den gleichen Speicherplatz haben (einfach gesagt).
gfoidl 22.10.2009

Stelle deine .net-Frage jetzt!