10.2 Anonyme Typen
In C# können Sie auch Objekte erstellen, ohne deren Typ explizit anzugeben. Dabei wird implizit eine neue Klasse erstellt – ein sogenannter anonymer Typ, z. B.:
var @object = new { Name = "Peter", Ort = "Hamburg" };
Die so generierte Klasse hat zwei private Felder und zwei öffentliche Eigenschaftsmethoden, die Name und Ort lauten. Das Objekt der anonymen Klasse wird anschließend einer implizit typisierten Variablen zugewiesen und kann über die Referenz @object abgefragt werden. Wegen der engen Beziehung zwischen der impliziten Typisierung mit var und dem anonymen Typ kann ein anonymer Typ nur lokal in einer Methode und nicht auf Klassenebene erzeugt werden.
Wenn Sie einen weiteren anonymen Typ erzeugen und dabei identisch benannte Eigenschaften angeben, sind die beiden anonymen Typen typgleich. Allerdings ist dabei nicht nur der Bezeichner maßgeblich entscheidend, sondern darüber hinaus auch die Reihenfolge der Parameter. Im folgenden Codefragment sind die beiden Referenzen obj1 und obj2 typgleich; obj3 weist jedoch eine andere Reihenfolge auf und wird daher als neuer anonymer Typ bewertet. Sie können sich das bestätigen lassen, indem Sie die von Object geerbte Methode GetType aufrufen.
var obj1 = new { Name = "Peter", Ort = "Hamburg" };
var obj2 = new { Name = "Uwe", Ort = "München" };
var obj3 = new { Ort = "Berlin", Name = "Hans" };
Console.WriteLine(obj1.GetType());
Console.WriteLine(obj2.GetType());
Console.WriteLine(obj3.GetType());
Listing 10.2 Mehrere anonyme Typen und die Typausgabe an der Konsole
Die Ausgabe des Listings 10.3 wird wie folgt lauten:
<>f__AnonymousType0’2[System.String,System.String]
<>f__AnonymousType0’2[System.String,System.String]
<>f__AnonymousType1’2[System.String,System.String]
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.