C# Generics

0 Comments

Generic bedeutet die allgemeine Form, nicht spezifisch. In C# bedeutet generisch nicht spezifisch für einen bestimmten Datentyp.

Mit C# können Sie generische Klassen, Schnittstellen, abstrakte Klassen, Felder,Methoden, statische Methoden, Eigenschaften, Ereignisse, Delegaten und Operatoren mithilfe des Typparameters und ohne den spezifischen Datentyp definieren. Ein Typparameter ist ein Platzhalter für einen bestimmten Typ, der beim Erstellen einer Instanz des generischen Typs angegeben wird.

Ein generischer Typ wird deklariert, indem ein Typparameter in eckigen Klammern nach einem Typnamen angegeben wird, z., TypeName<T> wobei T ein Typparameter ist.

Generische Klasse

Generische Klassen werden mit einem Typparameter in eckigen Klammern nach dem Klassennamen definiert. Das Folgende definiert eine generische Klasse.

Beispiel: Generische Klasse definieren

Oben ist die DataStore eine generische Klasse., T wird als Typparameter bezeichnet, der als Typ von Feldern, Eigenschaften, Methodenparametern, Rückgabetypen und Delegaten in der DataStore – Klasse verwendet werden kann. Zum Beispiel ist Data generische Eigenschaft, da wir einen Typparameter T als Typ anstelle des spezifischen Datentyps verwendet haben.

Hinweis
Es ist nicht erforderlich, T als Typparameter zu verwenden. Sie können einem Typparameter einen beliebigen Namen geben., Im Allgemeinen wird T verwendet, wenn nur ein Typparameter vorhanden ist. Es wird empfohlen, einen besser lesbaren Typparameternamen gemäß der Anforderung zu verwenden, z. B. TSession, TKey, TValue usw. Erfahren Sie mehr über Richtlinien zur Benennung von Typparametern

Sie können auch mehrere durch ein Komma getrennte Typparameter definieren.

Generische Klasse instanziieren

Sie können eine Instanz generischer Klassen erstellen, indem Sie einen tatsächlichen Typ in eckigen Klammern angeben., Im folgenden wird eine Instanz der generischen Klasse DataStore.

Oben haben wir beim Erstellen einer Instanz den Typ string in den eckigen Klammern angegeben. Daher wird T durch einen string-Typ ersetzt, wobei T zur Kompilierungszeit in der gesamten Klasse verwendet wird. Daher wäre der Typ der Data – Eigenschaft eine string.

Die folgende Abbildung zeigt, wie Generika funktioniert.,

Sie können der Eigenschaft Data einen Zeichenfolgenwert zuweisen. Der Versuch, andere Werte als string zuzuweisen, führt zu einem Kompilierungsfehler.

Sie können die verschiedenen Datentypen für verschiedene Objekte angeben, wie unten gezeigt.

<

Generische Klassenmerkmale

  • Eine generische Klasse erhöht die Wiederverwendbarkeit. Je mehr Typparameter bedeuten, desto wiederverwendbarer wird es., Zu viel Verallgemeinerung macht es jedoch schwierig, Code zu verstehen und zu pflegen.
  • Eine generische Klasse kann eine Basisklasse für andere generische oder nicht generische Klassen oder abstrakte Klassen sein.
  • Eine generische Klasse kann von anderen generischen oder nicht generischen Schnittstellen, Klassen oder abstrakten Klassen abgeleitet werden.

Generische Felder

Eine generische Klasse kann generische Felder enthalten. Es kann jedoch nicht initialisiert werden.

Beispiel: Generisches Feld

Im Folgenden wird ein generisches Array deklariert.,

Beispiel: Generisches Array

Generische Methoden

Eine Methode, die mit den Typparametern für ihren Rückgabetyp oder ihre Rückgabeparameter deklariert ist, wird als generische Methode bezeichnet.

Oben sind die AddorUpdate() und die GetData() Methoden generische Methoden. Der tatsächliche Datentyp des Parameters item wird zum Zeitpunkt der Instanziierung der Klasse DataStore<T> angegeben, wie unten gezeigt.,

Der generische Parametertyp kann mit mehreren Parametern mit oder ohne nicht generische Parameter und Rückgabetyp verwendet werden. Die folgenden sind gültige generische Methodenüberladung.

Eine nicht generische Klasse kann generische Methoden enthalten, indem sie einen Typparameter in eckigen Klammern mit dem Methodennamen angeben, wie unten gezeigt.

Vorteile von Generika

  1. Generika erhöhen die Wiederverwendbarkeit des Codes. Sie müssen keinen Code schreiben, um verschiedene Datentypen zu behandeln.
  2. Generika sind typsicher., Sie erhalten Kompilierungsfehler, wenn Sie versuchen, einen anderen Datentyp als den in der Definition angegebenen zu verwenden.
  3. Generic hat einen Leistungsvorteil, da es die Möglichkeiten des Boxens und Entpackens beseitigt.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.