TOC

This article has been localized into German by the community.

Datenarten:

Anonyme Typen

Bisher haben wir gelernt, dass Objekte aus einer Klasse stammen. Eine Klasse wird mit einer Anzahl von Feldern, Eigenschaften und / oder Methoden deklariert, und dann können Sie eine Instanz dieser Klasse als Objekt erstellen. Mit der Einführung anonymer Typen müssen Sie jedoch vor dem Erstellen eines Objekts keine Klasse mehr deklarieren. Machen Sie sich keine Sorgen, Klassen sind nicht komplett ausgestorben, weil anonyme Typen (oder Objekte) mit einigen Einschränkungen verbunden sind, aber in manchen Situationen sind sie wirklich großartig!

Ein anonymer Typ wird mit dem Operator new in Kombination mit einem Objektinitialisierer initialisiert. In dieser Hinsicht ist es sehr ähnlich, eine Klasse zu instanziieren, nur Sie lassen den Klassennamen weg. Da es keine Klasse hinter dem Objekt gibt, müssen Sie auch das Schlüsselwort var verwenden, wenn Sie den Verweis auf Ihr Objekt abrufen. Das mag kompliziert klingen, aber das folgende Beispiel soll Ihnen zeigen, dass es überhaupt nicht kompliziert ist:

var user = new    
{    
Name = "John Doe",    
Age = 42  
};
Console.WriteLine(user.Name + " - " + user.Age + " years old");

Das ist alles - wir haben jetzt ein Objekt mit Informationen (Name und Alter) über einen Benutzer. Anonyme Typen eignen sich hervorragend für viele Situationen, insbesondere wenn Sie etwas schnell und mit mehr Komplexität als nur eine Zeichenfolge oder eine Zahl zurückgeben müssen. Mit anonymen Typen können Sie Eigenschaften spontan erstellen, ohne sich darum zu kümmern, eine Klasse zuerst zu deklarieren und diese Klasse dann zu ändern, wenn sich Ihr Bedarf ändert. Wie bereits erwähnt, müssen Sie jedoch einige Einschränkungen beachten, wenn Sie einen anonymen Typ zum Definieren einer Klasse verwenden:

  • Anders als eine echte Klasse kann ein anonymer Typ keine Felder oder Methoden haben - nur Eigenschaften
  • Sobald das Objekt initialisiert wurde, können Sie keine neuen Eigenschaften hinzufügen.
  • Eigenschaften sind schreibgeschützt - sobald das Objekt initialisiert wurde, können Sie ihre Werte nicht ändern

Aber trotzdem sind anonyme Typen immer noch sehr praktisch für viele Aufgaben. Ein häufiges Anwendungsszenario ist, wenn Sie ein komplexes Objekt (aus einer definierten Klasse) haben und es vereinfachen müssen, z. weil Sie das Objekt so klein wie möglich halten müssen, um es an einen Browser zu senden, oder vielleicht, weil das vollständige Objekt sensible Informationen enthält, die Sie dem Verbraucher nicht zugänglich machen möchten. Anonyme Typen sind dafür großartig, wie es im nächsten Beispiel veranschaulicht wird:

using System;
using System.IO;

namespace AnonymousTypes
{
    class Program
    {
static void Main(string[] args)
{
    string pathOfExe = System.Reflection.Assembly.GetEntryAssembly().Location;
    FileInfo fileInfo = new FileInfo(pathOfExe);
    var simpleFileInfo = new
    {
Filename = fileInfo.Name,
FileSize = fileInfo.Length
    };
    Console.WriteLine("File name: " + simpleFileInfo.Filename + ". Size: " + simpleFileInfo.FileSize + " bytes");
}
    }
}

Die erste Zeile enthält einfach den Dateinamen der aktuell ausgeführten Datei, also unsere eigene Anwendung. Wir verwenden es, um eine Instanz der FileInfo-Klasse zu erstellen, die dann viele Informationen über diese spezifische Datei enthält. Wir möchten nicht alle diese Informationen, daher erstellen wir eine vereinfachte Version davon mit einem anonymen Typ unter Verwendung der Informationen aus der ursprünglichen FileInfo-Instanz. In der letzten Zeile verwenden wir diese Informationen für einige grundlegende Ausgaben.

Sie haben wahrscheinlich bemerkt, dass wir jeden der in unserem anonymen Typ (Filename und FileSize) definierten Eigenschaften einen Namen geben - das macht ziemlich viel Sinn, da wir später darauf zugreifen wollen. Wenn wir jedoch unser Objekt auf Informationen von einem existierenden Objekt aufbauen, können wir tatsächlich unseren eigenen Namen weglassen und der Compiler verwendet einfach den Namen der Eigenschaft, die wir ihm zuweisen, wie folgt:

var simpleFileInfo = new
{
    fileInfo.Name,
    fileInfo.Length
};

Jetzt haben wir zwei Eigenschaften namens Name und Länge anstelle von Dateiname und Dateigröße. Eine ziemlich nette Annehmlichkeit, wenn Ihnen die Namen egal sind oder vielleicht eher: Wenn Sie eigentlich genau die gleichen Namen wie das Originalobjekt bevorzugen.

Zusammenfassung

Mit anonymen Typen können Sie ein Objekt mit einer oder mehreren Eigenschaften schnell instanziieren. Diese Eigenschaften sind schreibgeschützt und Sie können zu einem späteren Zeitpunkt keine weiteren Eigenschaften hinzufügen.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!