Der geübte C# 2.0 Entwickler kennt bereits anonyme Methoden. Mit C# 3.0 werden die Methoden um anonyme Typen ergänzt. Hauptsächlich bei der Arbeit mit LINQ wird häufig Gebrauch von dieser neuen Entwicklung gemacht. In einem Satz werden anonyme Typen wie folgt definiert:
Anonyme Typen erlauben dem Entwickler Datentypen zu deklarieren, ohne dabei eine zugehörige formelle Definition dieser Typen zu erstellen.
Basis eines jeden anonymen Typs ist das Schlüsselwort var. Im Vorfeld muss zunächst ein Verständnis für dieses Schlüsselwort entwickelt werden. Daher ein kleiner Exkurs. Das Schlüsselwort var erlaubt dem Compiler die Bestimmung des zugrunde liegenden Datentyps – und zwar zurzeit des Kompilierens und nicht zur Laufzeit. Ein kleines Beispiel verdeutlicht dieses Vorgehen
var myInt = 10;
var myString = "Kai";
var myDouble = 100.5;
Mit Hilfe des .NET Reflector kann der Code, welcher durch den Compiler generiert wurde, analysiert werden.
Die Analyse zeigt, dass tatsächlich die korrekten Datentypen deklariert wurden.
Das Verständnis und den verbundenen Nutzen von anonymen Typen, wird am besten anhand eines Beispiels deutlich. Innerhalb einer Logik wird ein Datentyp benötigt um mehrere Daten zu speichern und weiterverarbeiten zu können – Bsp. ein Kunde. Dieser Kunde soll jeweils durch einen Namen und eine Zahl definiert werden. Unter normalen Umständen würde nun eine Klasse mit dem Namen Customer erstellt werden. Mit Hilfe von anonymen Typen ist dies jedoch nicht nötig.
var customer = new { Name = "Kai", Zahl = 100 };
Das Ergebnis ist ähnlich der Klasse, die erstellt werden würde: Ein Typ mit den Eigenschaften Name und Zahl. Dies wird auch durch das Visual Studio IntelliSense deutlich
Auch wenn diese Erweiterung viele Dinge einfacher macht, so sollte sie dennoch mit Vorsicht genossen werden. Das Schlüsselwort var sollte grundsätzlich nur dann benutzt werden, wenn tatsächlich mit anonymen Typen gearbeitet wird. Alle anderen Definitionen von Datentypen sollten weiterhin auf die althergebrachte Weise durchgeführt werden.
Wann die Verwendung von anonymen Typen tatsächlich angebracht ist, muss jeder Entwickler für sich selbst entscheiden. Das angegebene Beispiel schildert doch recht deutlich, dass häufig Anwendungsfälle gefunden werden können.