Maison > développement back-end > C++ > Quelle est la différence entre les types génériques ouverts, fermés et non liés dans .NET ?

Quelle est la différence entre les types génériques ouverts, fermés et non liés dans .NET ?

Susan Sarandon
Libérer: 2025-01-16 23:56:11
original
414 Les gens l'ont consulté

What's the Difference Between Open, Closed, and Unbound Generic Types in .NET?

Explication détaillée des types génériques ouverts dans .NET

Dans le contexte des actions du contrôleur ASP.NET MVC, une restriction est que les « types génériques ouverts » ne peuvent pas être utilisés. Cet article approfondit le concept de types génériques ouverts et fermés dans .NET.

Qu'est-ce qu'un type générique ouvert ?

Un type générique ouvert dans .NET est un type qui contient des paramètres de type, qui sont essentiellement des espaces réservés pour des types non spécifiés. Ces types peuvent être des paramètres de type ou des types génériques définis sans spécifier de paramètres de type. Par exemple, lui-même est un type générique ouvert, tout comme List et Dictionary.

Type générique fermé

Contrairement aux types génériques ouverts, les types génériques fermés sont des types qui ne contiennent pas de paramètres de type. Ils sont entièrement spécifiés en utilisant des types de béton comme paramètres. Par exemple, List et Dictionary sont des types génériques fermés.

Types génériques ouverts et types génériques non liés

Alors qu'un type générique ouvert contient des paramètres de type, un type générique non lié est un type générique avec des paramètres de type non spécifiés. Les types non liés ne peuvent pas être utilisés directement dans des expressions, ni être instanciés ou appelés. Ils représentent une définition générique avant de se lier à un type spécifique.

Clarification de la distinction

Considérez l'extrait de code suivant :

<code class="language-c#">class Program {
   static void Main() { Test<int>(); }
   static void Test<T>() {
      Console.WriteLine(typeof(List<T>)); // 打印类型名称
   }
}</code>
Copier après la connexion

Lorsque ce code est exécuté, "System.Collections.Generic.List`1[System.Int32]" sera imprimé, ce qui représente un type ouvert lié car le paramètre de type est connu au moment de l'exécution : System.Int32.

Opérations de liaison et de saisie

Les types génériques non liés peuvent être liés au moment de l'exécution à l'aide de la méthode Type.MakeGenericType. Par exemple :

<code class="language-c#">Type unboundGenericList = typeof(List<>);
Type listOfInt = unboundGenericList.MakeGenericType(typeof(int));
if (listOfInt == typeof(List<int>))
     Console.WriteLine("构造了一个 List<int> 类型。");</code>
Copier après la connexion

Conclusion

Comprendre la différence entre les types génériques ouverts, fermés et non liés est essentiel pour utiliser efficacement les génériques dans .NET. En tirant parti de ces concepts, vous pouvez créer un code flexible et réutilisable qui gère efficacement différents types de données.

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