Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Typvariablen dynamisch generische Instanzen in C# erstellen?

Wie kann ich mithilfe von Typvariablen dynamisch generische Instanzen in C# erstellen?

Susan Sarandon
Susan SarandonOriginal
2025-01-13 07:09:42354Durchsuche

How Can I Dynamically Create Generic Instances in C# Using Type Variables?

Dynamische Erstellung generischer Instanzen mithilfe von Typvariablen

In C# bieten generische Typen eine bequeme Möglichkeit, Datenstrukturen zu definieren und zu verwenden, die mit verschiedenen Datentypen arbeiten können. In einigen Fällen müssen Sie jedoch möglicherweise eine Instanz eines generischen Typs mithilfe einer Variablen des enthaltenden Typs erstellen.

Der folgende Code versucht, eine List-Instanz mithilfe einer Variablen k zu erstellen, die einen Double-Typ enthält. Die Kompilierung schlägt jedoch fehl:

<code class="language-c#">Type k = typeof(double);
List<k> lst = new List<k>();</code>

Um dieses Problem zu lösen, können Sie die folgenden Methoden verwenden:

  1. Erstellen Sie eine Variable vom Typ Typ, um den generischen Listentyp zu speichern.
  2. Erstellen Sie einen bestimmten Typ (in diesem Fall List) mithilfe der MakeGenericType-Methode des generischen Listentyps.
  3. Verwenden Sie schließlich Activator.CreateInstance, um eine Instanz des spezifischen Listentyps zu erstellen.

Das Folgende ist der korrigierte Code:

<code class="language-c#">var genericListType = typeof(List<>); // 注意<>
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);</code>

Mit diesem Ansatz können Sie dynamisch eine Instanz eines generischen Typs erstellen, indem Sie eine Variable verwenden, die den Type enthält. Diese Flexibilität ermöglicht Ihnen die Handhabung komplexer Datenstrukturen und Szenarios, in denen generische Typen programmgesteuert bestimmt werden müssen. Beachten Sie das typeof(List<>) in <>. Es zeigt an, dass es sich um einen generischen Typ und nicht um einen bestimmten Typ handelt.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Typvariablen dynamisch generische Instanzen in C# erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn