Maison >développement back-end >C++ >Comment puis-je convertir une liste en une liste en C #?

Comment puis-je convertir une liste en une liste en C #?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-01 17:56:40398parcourir

How Can I Convert a List to a List in C#?

C # Liste & lt;

L'héritage dans la programmation orientée objet permet aux dérivés de hériter des attributs et des méthodes de sa classe de base. Cependant, il n'est parfois pas clair pourquoi cet héritage ne peut pas être appliqué aux génériques comme la liste. Considérez l'exemple suivant:

Dans ce code, l'erreur du compilateur se produit car la liste

ne peut pas être implicitement convertie en liste

. Même si la classe C hérite de l'interface A, le compilateur ne peut pas convertir automatiquement l'ensemble de la classe dérivée en une collection de sa classe de base.
<code class="language-csharp">interface A { }

class B : A { }

class C : B { }

class Test
{
    static void Main(string[] args)
    {
        A a = new C(); // 正确
        List<A> listOfA = new List<C>(); // 编译器错误
    }
}</code>

Afin de résoudre ce problème, il y a deux façons: Utilisez convertall

La méthode Convertall accepte une fonction en tant que paramètre et crée une nouvelle liste en appliquant la fonction de la fonction à la liste source. Dans cet exemple, la fonction (x = & gt; (a) x) convertit de force chaque élément de la liste en type A.

Utilisez linq
<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>

La méthode Cast

() de Linq vous permet de convertir un type de liste en une autre liste. En convertissant la liste en liste puis en la convertissant en liste, vous pouvez créer une collection d'objets de classe de base à partir d'une collection de l'objet de classe dérivé.

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