Verwendung anonymer Typen in C #

Ein anonymer Typ ist ein Typ, der keinen Namen hat. Sie können einen anonymen Typ verwenden, um eine Reihe von schreibgeschützten Eigenschaften in einer einzelnen Einheit zu kapseln - und Sie müssen den anonymen Typ nicht vorher definieren. Dieser Artikel beschreibt, was anonyme Typen sind, warum sie wichtig sind und wie wir mit anonymen Typen in C # arbeiten können.

Um mit den in diesem Artikel bereitgestellten Codebeispielen arbeiten zu können, muss Visual Studio 2019 auf Ihrem System installiert sein. Wenn Sie noch keine Kopie haben, können Sie Visual Studio 2019 hier herunterladen. 

Erstellen Sie ein Konsolenanwendungsprojekt in Visual Studio

Zunächst erstellen wir ein .NET Core-Konsolenanwendungsprojekt in Visual Studio. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die folgenden Schritte aus, um ein neues .NET Core-Konsolenanwendungsprojekt in Visual Studio zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "Konsolen-App (.NET Core)" aus.
  4. Weiter klicken.
  5. Geben Sie im nächsten Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Klicken Sie auf Erstellen.

Dadurch wird ein neues .NET Core-Konsolenanwendungsprojekt in Visual Studio 2019 erstellt. Dieses Projekt wird in den folgenden Abschnitten dieses Artikels verwendet, um zu veranschaulichen, wie wir mit anonymen Typen in C # arbeiten können.

Verstehen Sie anonyme Typen in C #

Im Wesentlichen ist ein anonymer Typ ein Referenztyp und kann mit dem Schlüsselwort var definiert werden. Sie können eine oder mehrere Eigenschaften in einem anonymen Typ haben, aber alle sind schreibgeschützt. Im Gegensatz zu einer C # -Klasse kann ein anonymer Typ kein Feld oder keine Methode haben - er kann nur Eigenschaften haben.

Sie können auf einen anonymen Typ oder seine Eigenschaften innerhalb der Methode zugreifen, in der der anonyme Typ definiert wurde. Mit anderen Worten, die Zugänglichkeit eines anonymen Typs ist auf den Bereich beschränkt, in dem er definiert wurde.

Verwenden Sie einen anonymen Typ in C #

Lassen Sie uns nun einen Code untersuchen. Betrachten Sie den folgenden anonymen Typ.

var author = neu

{

  Vorname = "Joydip",

  Nachname = "Kanjilal",

  Adresse = "Hyderabad, INDIEN"

};

Im vorhergehenden Codefragment ist author der Name einer Instanz eines anonymen Typs, die mit dem neuen Schlüsselwort erstellt wurde. (Der Name des anonymen Typs selbst ist nur dem Compiler bekannt.) Dieser anonyme Typ enthält drei Eigenschaften, nämlich Vorname, Nachname und Adresse. Alle diese Eigenschaften sind vom Typ Zeichenfolge. Beachten Sie, dass Sie bei der Arbeit mit einem anonymen Typ den Typ einer Eigenschaft nicht angeben müssen, bevor Sie sie initialisieren.

Mit dem folgenden Codeausschnitt können Sie auf alle drei Eigenschaften des oben genannten anonymen Typs zugreifen.

Console.WriteLine ("Name: {0} {1}", author.FirstName, author.LastName);

Console.WriteLine ("Adresse: {0}", author.Address);

Verwenden Sie einen verschachtelten anonymen Typ in C #

Anonyme Typen können ebenfalls verschachtelt werden. Das heißt, Sie können einen anonymen Typ als Eigenschaft in einem anderen anonymen Typ haben. Hier ist ein Beispiel, das dies veranschaulicht.

var author = neu

{

  Vorname = "Joydip",

  Nachname = "Kanjilal",

  Adresse = neu {Stadt = "Hyderabad", Land = "INDIEN"}

};

Sie können auf die Eigenschaften dieses verschachtelten anonymen Typs zugreifen, wie im folgenden Code-Snippet gezeigt.

Console.WriteLine ("Name: {0} {1}", author.FirstName, author.LastName);

Console.WriteLine ("Adresse: {0}", author.Address.City);

Das vollständige Programm finden Sie unten als Referenz.

statische Leere Main (string [] args)

{

  var author = neu

  {

     Vorname = "Joydip",

     Nachname = "Kanjilal",

     Adresse = neu {Stadt = "Hyderabad", Land = "INDIEN"}

  };

  Console.WriteLine ("Name: {0} {1}", author.FirstName, author.LastName);

  Console.WriteLine ("Adresse: {0}", author.Address.City);

  Console.Read ();

}}

Verwenden Sie anonyme Typen mit LINQ 

Die Select-Klausel in LINQ erstellt und gibt als Ergebnis einen anonymen Typ zurück. Das folgende Codefragment veranschaulicht dies.

Betrachten Sie die folgende Klasse mit dem Namen Author.

öffentliche Klasse Autor

{

  public int Id {get; einstellen; }}

  öffentliche Zeichenfolge Vorname {get; einstellen; }}

  öffentlicher String Nachname {get; einstellen; }}

}}

Das folgende Codefragment zeigt, wie Sie eine Liste von Autoren erstellen können.

IList Autoren =

neue Liste()

{

  neuer Autor () {Id = 1, Vorname = "John", Nachname = "Willey"},

  neuer Autor () {Id = 2, Vorname = "Steve", Nachname = "Smith"},

  neuer Autor () {Id = 3, Vorname = "Rechnung", Nachname = "Ruffner"},

  neuer Autor () {Id = 4, Vorname = "Joydip", Nachname = "Kanjilal"}

};

Das nächste Codefragment zeigt, wie Sie die Select-Klausel in LINQ zusammen mit einem anonymen Typ nutzen können, um das Ergebnis bei Ausführung einer Abfrage zurückzugeben.

var result = von a in Autoren wählen Sie neu

{

   Id = a.Id,

   Name = a.FirstName + "\ t" + a.LastName

};

Sie können jetzt die Autoren-IDs und -Namen im Konsolenfenster anzeigen, wie im folgenden Codeausschnitt gezeigt.

foreach (var Daten im Ergebnis)

      Console.WriteLine (data.Name);

Das vollständige Programm finden Sie unten als Referenz.

öffentliche Klasse Autor

    {

        public int Id {get; einstellen; }}

        öffentliche Zeichenfolge Vorname {get; einstellen; }}

        öffentlicher String Nachname {get; einstellen; }}

    }}

    Klassenprogramm

    {

        statische Leere Main (string [] args)

        {

            IList Autoren = neue Liste () {

                        neuer Autor () {Id = 1, Vorname = "John",

                                      Nachname = "Willey"},

                        neuer Autor () {Id = 2, Vorname = "Steve",

                                      Nachname = "Smith"},

                        neuer Autor () {Id = 3, Vorname = "Rechnung",

                                      Nachname = "Ruffner"},

                        neuer Autor () {Id = 4, Vorname = "Joydip",

                                      Nachname = "Kanjilal"}

                };

            var result = von a in Autoren

                         Neu auswählen

                         {

                             Id = a.Id,

                             Name = a.FirstName + "\ t" + a.LastName

                         };

            foreach (var Daten im Ergebnis)

                Console.WriteLine (data.Name);

            Console.Read ();

        }}

    }}

Mit anonymen Typen können Sie einen Typ erstellen und schnell instanziieren, ohne den Typ zuvor deklarieren zu müssen. Aus Sicht der CLR ist ein anonymer Typ nur ein weiterer Referenztyp. Der Compiler gibt jedem anonymen Typ unter der Decke einen Namen.

Anonyme Typen leiten sich von der Object-Klasse ab. Aus diesem Grund können Sie einen anonymen Typ nur in eine Instanz des Objekttyps umwandeln. Beachten Sie auch, dass der Rückgabetyp einer Methode, einer Eigenschaft, eines Ereignisses, eines Delegaten usw. kein anonymer Typ sein kann.

So machen Sie mehr in C #:

  • Wann wird eine abstrakte Klasse im Vergleich zur Schnittstelle in C # verwendet?
  • So arbeiten Sie mit AutoMapper in C #
  • Verwendung von Lambda-Ausdrücken in C #
  • So arbeiten Sie mit Action-, Func- und Predicate-Delegaten in C #
  • Verwendung des Dapper ORM in C #
  • So implementieren Sie einen einfachen Logger in C #
  • So arbeiten Sie mit log4net in C #
  • So arbeiten Sie mit Delegierten in C #
  • So arbeiten Sie mit Attributen in C #
  • Verwendung des Entwurfsmusters im Fliegengewicht in C #
  • So implementieren Sie das Repository-Entwurfsmuster in C #
  • Erkundung virtueller und abstrakter Methoden in C #
  • Wie man mit Reflexion in C # arbeitet
  • So arbeiten Sie mit dem Dateisystemwatcher in C #