Heim >Backend-Entwicklung >C++ >Wie kann ich eine generische Typinstanz mithilfe einer Variablen erstellen, die den Typ enthält?

Wie kann ich eine generische Typinstanz mithilfe einer Variablen erstellen, die den Typ enthält?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-13 06:26:42929Durchsuche

How Can I Create a Generic Type Instance Using a Variable Holding the Type?

Erstellen Sie eine generische <T>-Typinstanz mithilfe einer Variablen, die den Typ

enthält

Das Erstellen einer Instanz eines generischen Typs mithilfe einer Variablen, die den Typ enthält, ist eine nützliche Technik in Szenarien wie der dynamischen Generierung von Typinformationen. Während der in der Frage angegebene Code, der versucht, eine List<k>-Instanz zu erstellen (wobei k eine Variable vom Typ Type ist), möglicherweise nicht kompiliert werden kann, gibt es andere Möglichkeiten, diese Funktionalität zu erreichen.

Eine mögliche Lösung besteht darin, die Methode MakeGenericType für die generische Typdefinition zu verwenden. Diese Methode akzeptiert eine Reihe von Typparametern und gibt einen neuen Typ zurück, der eine Version des generischen Typs ist, der mithilfe dieser Parameter instanziiert wurde. In diesem Fall würde der Code so aussehen:

<code class="language-csharp">var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));</code>

genericListType-Variablen enthalten Definitionen generischer List<T>-Typen, und MakeGenericType-Methoden geben spezialisierte List<double>-Typen zurück.

Nachdem Sie einen bestimmten generischen Typ erstellt haben, können Sie die Klasse Activator verwenden, um Instanzen zu erstellen. Die CreateInstance-Methode kann verwendet werden, um basierend auf Typinformationen eine Instanz eines neuen Typs zu erstellen.

<code class="language-csharp">var list = Activator.CreateInstance(specificListType);</code>

Das obige ist der detaillierte Inhalt vonWie kann ich eine generische Typinstanz mithilfe einer Variablen erstellen, die den Typ enthält?. 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