Maison > développement back-end > C++ > Comment puis-je instancier un type générique en C# avec une variable comme paramètre de type ?

Comment puis-je instancier un type générique en C# avec une variable comme paramètre de type ?

Barbara Streisand
Libérer: 2025-01-13 06:03:43
original
122 Les gens l'ont consulté

How Can I Instantiate a Generic Type in C# with a Variable as the Type Parameter?

instancier un type générique C# en utilisant des variables comme paramètres de type

En C#, il est souvent nécessaire de créer des instances de types génériques basées sur des paramètres de type déterminés dynamiquement. Cependant, fournir les valeurs des paramètres de type directement dans le mot-clé new n'est pas possible et entraîne l'erreur suivante :

<code>'List<k>' is a 'Type' but is used like a 'Type'</k></code>
Copier après la connexion

Solution

Pour surmonter cette limitation, la réflexion peut être utilisée pour construire explicitement des types génériques :

  1. Récupérer le type d'une classe générique (par exemple, List<T>) :

    <code class="language-C#">Type genericListType = typeof(List<>);</code>
    Copier après la connexion
  2. Remplacez <T> par le type souhaité pour obtenir un type générique concret :

    <code class="language-C#">Type specificListType = genericListType.MakeGenericType(typeof(double));</code>
    Copier après la connexion
  3. Utilisez la réflexion pour créer une instance d'un type générique spécifique :

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

Avec cette approche, vous pouvez créer des instances d'un type générique qui utilisent des paramètres de type pilotés par des variables.

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