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 #?
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!