Maison >développement back-end >C++ >Comment puis-je instancier des types génériques en C# à l'aide de variables de type ?

Comment puis-je instancier des types génériques en C# à l'aide de variables de type ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-13 07:29:11704parcourir

How Can I Instantiate Generic Types in C# Using Type Variables?

Créer une instance de type générique en utilisant une variable du type contenant

En C#, il peut sembler contre-intuitif que vous ne puissiez pas instancier un type générique directement à l'aide d'une variable du type conteneur. Le code suivant illustre le problème :

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

Ce code ne se compile pas car il tente d'utiliser la variable k pour spécifier un type générique. Cependant, il existe une solution de contournement qui peut être utilisée pour obtenir la fonctionnalité souhaitée.

Pour créer une instance de type générique à l'aide d'une variable du type conteneur, vous pouvez exploiter la réflexion et Activator.CreateInstance() :

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

Ce code fonctionne comme ceci :

  1. genericListType Obtient la définition générique du type List<>.
  2. MakeGenericType() obtient la définition de type générique et spécifie les paramètres de type réels (double dans ce cas).
  3. Activator.CreateInstance() Instancie un type générique spécifique en utilisant les paramètres de type spécifiés.

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!

Déclaration:
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