Maison > développement back-end > C++ > Comment puis-je créer une instance de type générique à l'aide d'une variable contenant le type ?

Comment puis-je créer une instance de type générique à l'aide d'une variable contenant le type ?

Patricia Arquette
Libérer: 2025-01-13 06:26:42
original
926 Les gens l'ont consulté

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

Créer une instance de type <T> générique en utilisant une variable contenant le type

Créer une instance d'un type générique à l'aide d'une variable contenant le type est une technique utile dans des scénarios tels que la génération dynamique d'informations de type. Bien que le code donné dans la question, qui tente de créer une instance List<k> (où k est une variable de type Type ), ne puisse pas être compilé, il existe d'autres moyens d'obtenir cette fonctionnalité.

Une solution possible consiste à utiliser la méthode MakeGenericType sur la définition de type générique. Cette méthode accepte un ensemble de paramètres de type et renvoie un nouveau type qui est une version du type générique instancié à l'aide de ces paramètres. Dans ce cas, le code ressemblerait à ceci :

<code class="language-csharp">var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));</code>
Copier après la connexion
Les variables

genericListType contiennent des définitions de types List<T> génériques, et les méthodes MakeGenericType renvoient des types List<double> spécialisés.

Après avoir créé un type générique spécifique, vous pouvez utiliser la classe Activator pour créer des instances. La méthode CreateInstance peut être utilisée pour créer une instance d'un nouveau type basé sur les informations de type.

<code class="language-csharp">var list = Activator.CreateInstance(specificListType);</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal