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

Comment puis-je créer dynamiquement des instances génériques en C# à l'aide de variables de type ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-13 07:09:42400parcourir

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

Création dynamique d'instances génériques à l'aide de variables de type

En C#, les types génériques constituent un moyen pratique de définir et d'utiliser des structures de données pouvant fonctionner avec différents types de données. Cependant, dans certains cas, vous devrez peut-être créer une instance d'un type générique à l'aide d'une variable du type conteneur.

Le code suivant tente de créer une instance List en utilisant une variable k contenant un type double. Cependant, il ne parvient pas à compiler :

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

Pour résoudre ce problème, vous pouvez utiliser les méthodes suivantes :

  1. Créez une variable de type Type pour stocker le type de liste générique.
  2. Créez un type spécifique (List dans ce cas) en utilisant la méthode MakeGenericType du type liste générique.
  3. Enfin, utilisez Activator.CreateInstance pour créer une instance du type de liste spécifique.

Voici le code corrigé :

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

Avec cette approche, vous pouvez créer dynamiquement une instance d'un type générique à l'aide d'une variable contenant le Type . Cette flexibilité vous permet de gérer des structures de données et des scénarios complexes dans lesquels les types génériques doivent être déterminés par programme. Notez le typeof(List<>) dans <>, il indique qu'il s'agit d'un type générique, pas d'un type spécifique.

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