Maison > développement back-end > C++ > Pourquoi ne puis-je pas attribuer la liste à liste dans C # 2.0?

Pourquoi ne puis-je pas attribuer la liste à liste dans C # 2.0?

Linda Hamilton
Libérer: 2025-02-02 05:21:09
original
724 Les gens l'ont consulté

Why Can't I Assign List to List in C# 2.0?

C # 2.0 La liste générique des génériques: Liste & lt;

C # La caractéristique de la variance fait référence à la capacité de participer à une valeur collaborative ou inversée. Cependant, la liste d'essais & lt;

Même s'il est explicitement transformé, il échouera, ce qui met en évidence le problème. Il devrait être clair que ce n'est pas un problème de coordination. En fait, afin d'assurer la sécurité de la compilation, cette affectation est clairement interdite.

List<动物> animalsList = new List<长颈鹿>();
Copier après la connexion
Le risque potentiel de variance peut être expliqué à travers l'exemple suivant:

Ce code semble inoffensif, mais il peut provoquer un comportement accidentel et des dommages aux données. Attribuez le type dérivé (lion) au type de base (animal) pour permettre la violation des règles de sécurité de type.

List<长颈鹿> giraffes = new List<长颈鹿>();
giraffes.Add(new 长颈鹿());
List<动物> animals = giraffes;
animals.Add(new 狮子());
Copier après la connexion
Bien que la différence de type de la vérification du type de référence pendant le tableau prend en charge l'exécution, les génériques sont conçus pour obtenir la sécurité du type de compilation.

Introduction du support de variance de sécurité en C # 4, mais seulement limité aux interfaces et à la commission commandée. Les coordonnées sont autorisées à être utilisées pour Func

et ienumeration

, et les onduleurs sont autorisés à utiliser

. Pour la solution de C # 2.0, il est recommandé d'utiliser la liste .Convertall pour créer une nouvelle liste au lieu d'essayer de modifier la liste originale.

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 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