Maison > développement back-end > C++ > Comment convertir une liste de classes dérivées en une liste de classes de base en C #?

Comment convertir une liste de classes dérivées en une liste de classes de base en C #?

Mary-Kate Olsen
Libérer: 2025-02-01 17:41:10
original
999 Les gens l'ont consulté

How to Convert a List of Derived Classes to a List of Base Classes in C#?

C # Les paroles sont transformées en une liste de classe de base

Le mécanisme d'héritage nous permet de créer de nouvelles classes en fonction de la classe existante, mais le même concept n'est pas directement applicable aux listes génériques. Plus précisément, nous ne pouvons pas déclarer un

et attribuer une liste de types dérivés, même si la classe dérivée hérite de la classe auto-basée. Veuillez considérer l'exemple suivant:

List<基类>

Ce code échoue pendant la compilation, car le compilateur attend une liste d'un objet A, pas la liste de l'objet C. Pour résoudre ce problème, nous devons convertir la liste des objets dérivés en une liste d'objets 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>
Copier après la connexion

Méthode de conversion

La méthode de conversion en est d'itérer les éléments de la liste et de les convertir manuellement manuellement. Cela peut être implémenté en utilisant la méthode

:

List<派生类> List<基类> Ici, chacun des éléments de la liste C itérative le convertissez-le en type A et ajoutez-le à la nouvelle liste Listofa. ConvertAll

La méthode alternative d'utilisation de Linq
<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>
Copier après la connexion

ou, nous pouvons utiliser LINQ pour exécuter la conversion:

Ici, convertir chaque élément de la liste en type A, et

crée une nouvelle liste contenant l'élément de conversion.

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