.NET C# Java Javascript Exception

 | 
Frage stellen Fragen Themen Mitglieder Abzeichen RSS-Feed
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 :)
Themen:
21.10.09
Arade 225 4
Kommentieren - Für Rückfragen oder Anmerkungen
1 Antworten
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.09
gfoidl 6,6k 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.09
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.09
Deine Antwort
Entweder einloggen... ...oder ohne Wartezeit registrieren
Name
Passwort
Passwort wiederholen
E-Mail
Geworben von


Login mit OpenID

Mit einem OpenID-Account kannst Du dich auf allen Webseiten anmelden, die OpenID unterstützen. Du hast bereits ein Benutzerkonto bei einem der folgenden Provider? Dann kannst Du dich direkt hier damit registrieren.


OpenID-Provider anklicken: