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
Linda Hamiltonoriginal
2025-02-02 05:21:09673parcourir

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.

<code class="language-csharp">List<动物> animalsList = new List<长颈鹿>();</code>
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.

<code class="language-csharp">List<长颈鹿> giraffes = new List<长颈鹿>();
giraffes.Add(new 长颈鹿());
List<动物> animals = giraffes;
animals.Add(new 狮子());</code>
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:
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