.
Anmeldung | Registrieren | Hilfe |
Suchen
Home Foren News Member Offers Termine Developer Blogs Knowledge Base

Navigation

Navigationslinks überspringen.
Knowledge Base reduzierenKnowledge Base
Tutorials reduzierenTutorials
Webentwicklung
Cliententwicklung
Datenbankentwicklung
IT Professional
Sharepoint
Sprachspezifisch reduzierenSprachspezifisch
C#
Visual Basic
C++
XAML
SQL
JavaScript
Erfahrungsberichte reduzierenErfahrungsberichte
Entwicklersoftware
Bücher
FAQ Grundlagen

Verknüpfungen

  • Knowledge Base durchsuchen
  • Hilfe zur Knowledge Base
  • RSS Feed
  • Twitter

Anonyme Typen

Anonyme Typen sind eine weitere Neuerung in C# 3.0 und VB 9.0 die ich hier vorstellen möchte.

Was sind anonyme Typen

Ein anonymer Typ ist ein Typ der verwendet werden kann, ohne dass dieser explizit definiert wurde. Das heißt man kann eine Instanz einer Klasse erstellen ohne die Klasse selbst zu entwicklen.

Anonyme Typen haben mit LINQ einzug in das .Net Framework gehalten. Daher werden Anonyme Typen auch meistens für LINQ verwendet. Natürlich können Anonyme Typen jederzeit und unabhängig von LINQ benutzt werden, ob dies sinnvoll ist wird später in diesem Artikel noch genauer erläutert.

Der Syntax von Anonymen Typen

Einen eigenen Anonymen Typ zu definieren ist sehr simpel. Das nachfolgende Snippet veranschaulicht dies anhand eines einfachen Beispiels

   1: var myCat = new { Name="Mize", Age=6, Weight=5.5};

CodeSnippet #1: Der erste Anonyme Typ

Viele C# Entwickler werden bei dem Anblick des Snippets laut aufschreien, weil sie das Schlüsselwort var entdecken. Aber keine Sorge, wir verfallen nicht der typlosen Programmierung ganz im Gegenteil. Eine in C# 3.0 mit var definierte Variable ist streng typisiert.

In diesem Fall ist myCat durch den neu angelegten Anonymen Typen streng typisiert, sodass man mit der Variable myCat programmieren kann als hätte man die Klasse Cat tatsächlich implementiert. Eine Variable die mit var initialisiert wurde bekommt den Typ des zugewiesenen Wertes.

Wie weiter in diesem Snippet zu sehen ist, werden 3 Werte in diesem Ausdruck zugewiesen.

  • Name (System.String)
  • Age (System.Integer)
  • Weight (System.Double)

Der Compiler erzeugt für jeden der Werte eine Property in dem neuen Anonymen Typ. Da es keinen Typen in unserem Beispielprojekt gibt, entfällt bei Anonymen Typen logischerweise auch die Angabe eines Klassennamens hinter dem Schlüsselwort new.

Allgemeine Hinweise für Anonyme Typen

Hier noch einige wissenswerte Informationen zu anonymen Typen.

Generierte Properties

Alle Properties die für einen Anonymen Typ angegeben werden sind ReadOnly, das heisst man kann im Verlauf des Programmes den Wert der Property zwar auslesen aber nicht wieder zuweisen.

Mehrere Anonyme Typen

Wenn mehrere Anonyme Typen die gleiche Anzahl an Properties hat, die sowohl in Typen und Reihenfolge übereinstimmen, verwendet der Compiler immer den zuerst definierten anonymen Typ.

Die Equals Methode

Die Equals() Methode eines Anonymen Typen ist so implementiert, dass diese nur true zurück gibt wenn alle Properties eines Typen gleich sind.

Visual Studio 2008 Support

Wie bei einem normalen Datentyp bietet Visual Studio auch für anonyme Typen IntelliSense an. Hier der IntelliSense für den in CodeSnippet #1 erstellten Anonymen Typen

IntelliSense für Anonyme Typen
Abbildung #1: IntelliSense eines Anonymen Typen

 

Hinter den Kulissen

Wie der Disassembler zeigt wird in der DLL (abhängig vom Projekttyp) vom .Net Compiler eine Klassendefinition für jeden eindeutigen Anonymen Typen mit den entsprechenden Feldern und Properties erstellt.

Disassembler eines Anonymen Typen

Abbildung #2: Disassembler eines Anonymen Typen

Einsatzgebiete von Anonymen Typen

Anonyme Typen werden hauptsächlich für LINQ verwendet so werden zum Beispiel folgendermaßen Kundeninformationen aus einer beliebigen Datenquelle abgerufen:

   1: var custQuery = from cust in customers
   2:             where cust.ZipCode == "12345"
   3:             select new { cust.Name, cust.Phone, cust.City };

CodeSnippet #2: Verwendung von Anonymen Typen in LINQ

Microsoft selbst sagt, dass Anonyme Typen mit Vorsicht zu genießen sind, da diese im 'normalen' -also nicht LINQ- Content die Lesbarkeit des Codes erschweren. Natürlich kann ein jeder Anonyme Typen verwenden wo er möchte doch auch ich finde dass der Quellcode durch Anonyme Typen nicht gerade schöner wird. Besonders wenn man einen Quellcode längere Zeit nicht mehr gesehen hat, sind anonyme Typen eine kleine Hürde, die dann aber wieder genommen werden muss.

von ThorstenHans, 29.07.2008 zugeordnet zu C# , Tutorials .

Kommentare

Es sind noch keine Kommentare vorhanden.

Eigener Kommentar

Sie müssen angemeldet sein, um ein Kommentar zu erstellen.
  • Schwierigkeit: Einsteiger
  • Views: 2108
  • Zur Druckversion
  • Artikel von ThorstenHans

Kick it on dotnet-kicks.de

Artikel

Autor

Kick it!

Wenn ihnen dieser Artikel gefällt, bitte "kicken" sie ihn.

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum