Maison >développement back-end >C++ >Comment puis-je convertir une liste d'objets de classe dérivés en une liste d'objets de classe de base en C #?

Comment puis-je convertir une liste d'objets de classe dérivés en une liste d'objets de classe de base en C #?

Susan Sarandon
Susan Sarandonoriginal
2025-02-01 17:46:09479parcourir

How Can I Convert a List of Derived Class Objects to a List of Base Class Objects in C#?

La conversion de la classe dérivée en la liste des classes de base

Dans la programmation orientée objet, les classes de classes et les interfaces de l'héritage sont des pratiques très courantes. Cependant, lors de la gestion d'une collection, nous rencontrons une limite évidente: pourquoi ne pouvons-nous pas utiliser la même classe ou l'interface que la classe de base pour définir la liste?

Considérez l'exemple suivant:

Essayez de installer dans
<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>
provoquera des erreurs de compilateur. Pour résoudre ce problème, nous devons trouver une solution.

listOfA Solution: conversion expressive et linq List<C>

Une méthode consiste à traverser manuellement la liste et à convertir chaque élément en type de base requis. Cela peut être implémenté en utilisant la méthode :

Une autre solution utilisant LINQ consiste à utiliser l'opérateur ConvertAll pour convertir la liste entière:

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

En utilisant ces technologies, nous pouvons convertir efficacement la liste des classes dérivées en une liste de son type de base, afin que nous ayons une plus grande flexibilité lorsque nous traitons des schémas d'héritage. Cast

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