So erstellen Sie eine Liste offener generischer Typen (Klasse
Beim Programmieren kann es vorkommen, dass Sie mehrere Datentypen in einer Sammlung verarbeiten müssen. In diesem Fall können Generika eine flexible Lösung bieten. Die Verwendung offener generischer Typen wie List führt jedoch manchmal zu Compilerfehlern.
Angenommen, Sie haben eine Klasse „Data“
<code class="language-c#">List<Data> dataCollection = new List<Data>();</code>
Dieser Code lässt sich jedoch nicht kompilieren, da der Compiler sich darüber beschwert, dass der generische Typ „Data“ einen Typparameter erfordert. Dies liegt daran, dass der Compiler bei offenen generischen Typen die Typparameter beim Erstellen der Liste nicht ableiten kann.
Offene und geschlossene generische Typen verstehen
Um dieses Problem zu lösen, ist es wichtig, den Unterschied zwischen offenen und geschlossenen generischen Typen zu verstehen. Im Fall von List handelt es sich um einen offenen generischen Typ, was bedeutet, dass der Typparameter T unspezifiziert bleibt. Andererseits gibt ein geschlossener generischer Typ Typparameter wie List> an.
Erstellen Sie eine Liste geschlossener generischer Typen
Um eine Liste eines geschlossenen generischen Typs zu erstellen, müssen Sie beim Erstellen der Liste die Typparameter angeben. Zum Beispiel:
<code class="language-c#">List<Data<string>> stringDataCollection = new List<Data<string>>(); List<Data<decimal>> decimalDataCollection = new List<Data<decimal>>();</code>
Einschränkungen des offenen generischen Typpolymorphismus
Leider gibt es in C# keinen direkten Mechanismus, um echten Polymorphismus offener generischer Typen zu erreichen. Das bedeutet, dass Sie keine Liste wie List> erstellen und darin verschiedene umschließende Typen wie Data und Data
Alternative Methoden
Wenn Sie eine Sammlung mit Objekten unterschiedlichen Typs verwalten müssen, können Sie die folgenden Alternativen in Betracht ziehen:
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Liste offener generischer Typen (Klasse) in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!