Anonymer Datentyp

Anonymer Datentyp

Ein anonymer Typ ist ein namenloser Datentyp, der nur im aktuellen Gültigkeitsbereich bekannt und verweisbar ist.

Die XML-Strukturdefinitionssprache XML Schema sieht vor, dass man in einem benannten Element einen unbenannten (anonymen) komplexen Typinhalt definieren kann.

In den Programmiersprachen C# und VisualBasic.NET stellen die Compiler seit .NET Framework 3 eine Möglichkeit bereit, im aktuellen Gültigkeitsbereich ein anonymes Objekt mit benannten Eigenschaften zu erstellen.

Inhaltsverzeichnis

Anonyme Typen in XML Schema

In der Strukturdefinitionssprache XML Schema kann ein anonymer Typ als Teil der Definition eines XML-Elements definiert werden.[1] Häufig wird dies bei Definitionen von Listen verwendet, wie im folgenden Beispiel.

  <xsd:element name="rechnung">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="posten" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="artikelnummer" type="xsd:string" />
              <xsd:element name="anzahl" type="xsd:integer" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

Hier gibt es zwar Elementnamen für einzelnen Rechnungsposten, die Liste selbst taucht jedoch nicht als Element auf, wie im folgenden Beispiel, das ein XML-Dokument darstellt, welches dem zuvor definierten Schema entspricht.

  <rechnung>
    <posten>
      <artikelnummer>23</artikelnummer>
      <anzahl>3</anzahl>
    </posten>
    <posten>
      <artikelnummer>42</artikelnummer>
      <anzahl>5</anzahl>
    </posten>
  </rechnung>

Anonyme Typen in C# 3 und Visual Basic 9

Mit anonymen Typen stellen die Sprachcompiler die Möglichkeit bereit, ein einfaches Objekt mit Eigenschaften zu erstellen, ohne es in einer separaten Datei als Klasse definieren zu müssen. Dazu wird die Variable mit 'var' deklariert.

Beispiel in C#:

var Person = new { Vorname = "Hans", Name = "Graf", Schuhgröße = 40 };

Mit den anonymen Typen kann man auch vordefinierte Klassen instanzieren. Die Eigenschaften des anonymen Objekts werden den öffentlichen Eigenschaften der neu instanzierten Klasse zugewiesen. Angenommen es existiert die Klasse Person mit den öffentlichen Eigenschaften Vorname, Name und Schuhgröße:

Person meinePerson = new Person() { Vorname = "Hans", Name = "Graf", Schuhgröße = 40 };

Es ist auch möglich, Arrays mit der anonymen Typ-Syntax zu initialisieren:

Person[] meinePersonen = new Person[] {
  new Person { Vorname = "Hans", Name = "Graf", Schuhgröße = 40 },
  new Person { Vorname = "Anne", Name = "Schneider", Schuhgröße = 38 }
};

Bei der Initialisierung von Dictionary<T> wird die Syntax mit anonymen Typen ebenfalls vereinfacht:

Dictionary<string, Person> IdPersonen = new Dictionary<string, Person>() {
  { "id_0", new Person { Vorname = "Hans", Name = "Graf" },
  { "id_1", new Person { Vorname = "Anne", Name = "Schneider" }
};

Tatsächlich sollte die Anwendung dieser Methode nicht übertrieben werden, da bei jeder Definition ein neuer Typ generiert (TypeBuilder) und instanziert wird.

Anonyme (generierte) Typen in .NET Framework sind direkt vererbt von System.Object, können nicht geerbt werden und die Eigenschaften werden ausschließlich mit get_-Accessor generiert, d.h. man kann nicht vor einer Schleife den Typ definieren und innerhalb der Schleife die Eigenschaften-Werte ändern.

Möchte man eine Funktion definieren, die einen anonymen Typ als Parameter annimmt, muss man den Funktionsparameter als System.Object definieren und seine Eigenschaften mittels Reflexion auslesen.

Einzelnachweise

  1. XML Schema Part 0: Primer Second Edition: 2.4 Anonymous Type Definitions. Abgerufen am 29. November 2009.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Sprachelemente von C-Sharp — Dieser Artikel bietet eine Übersicht einiger Sprachelemente von C#. Inhaltsverzeichnis 1 Bedingte Ausführung (if, else, switch) 2 Schleifen (for, do, while, foreach) 3 Die Sprunganweisungen break, c …   Deutsch Wikipedia

  • XML-Schema — ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen unterstützt.… …   Deutsch Wikipedia

  • XML Schema Definition — XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen… …   Deutsch Wikipedia

  • XSD — XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen… …   Deutsch Wikipedia

  • XSD-Schema — XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen… …   Deutsch Wikipedia

  • XML Schema — XML Schema, abgekürzt XSD, ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”