Maison > développement back-end > C++ > Comment la covariance et la contravariance génériques de C# 4.0 améliorent-elles la flexibilité de l'attribution de types ?

Comment la covariance et la contravariance génériques de C# 4.0 améliorent-elles la flexibilité de l'attribution de types ?

Patricia Arquette
Libérer: 2025-01-25 00:22:13
original
793 Les gens l'ont consulté

How Does C# 4.0's Generic Covariance and Contravariance Enhance Type Assignment Flexibility?

C # 4.0 La collaboration génétique et l'onduleur

C # 4.0 introduit le support pour la collaboration génétique et l'onduleur, ce qui rend la généalogie des types génériques plus flexible. Dans la première version de C #, essayer

attribuer

à List<string> provoquera l'erreur du compilateur, bien que List<object> puisse accueillir tout objet pouvant être converti en chaîne. List<string>

Afin de résoudre ce problème, C # 4.0 permet au type de variante de sortie (tel que

) de se coordonner, et le type de variant d'entrée (tel que IEnumerable<T>) est inversé. Action<T>

coopération

La coordination permet à un type d'être utilisé comme alternative à un autre type dans la structure hiérarchique de l'héritage. Par exemple,

peut être affecté à

, car la chaîne est un objet. Cela est dû au fait que List<string> est déclaré List<object>, indiquant qu'il ne peut sortir que la valeur du type T. Par conséquent, tant que n'est utilisé que pour la valeur de lecture, il est sûr de l'utiliser comme IEnumerable<T>. IEnumerable<out T> List<string> revers List<object>

Disposter permet à un type d'être utilisé comme alternative à un autre type dans la structure hiérarchique de l'héritage. Par exemple, peut être attribué à , car les objets peuvent recevoir une chaîne sous forme de paramètres. En effet,

est déclaré

, indiquant qu'il ne peut accepter que la valeur du type T. Par conséquent, tant que est utilisé uniquement pour transmettre une valeur, il est sûr de l'utiliser comme Action<object>. Action<string> Action<T> Implémentez les détails Action<in T> Action<object> Action<string> En C # 4.0, la variance est réalisée en utilisant le support collaboratif et inverse de CLR. Cela fait que C # 4.0 prend en charge la variance sans affecter le type de sécurité.

Lorsque la déclaration de type générique est la déformation de sortie ou la déformation d'entrée, le compilateur génère du code IL supplémentaire pour vérifier la variance du paramètre de type pendant l'exécution. Cela garantit que la coordination et l'inversion sont utilisés de manière sûre.

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