首页 > 后端开发 > C++ > 如何将派生类对象的列表转换为C#中的基类对象列表?

如何将派生类对象的列表转换为C#中的基类对象列表?

Susan Sarandon
发布: 2025-02-01 17:46:09
原创
566 人浏览过

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

从派生类列表转换为基类列表

面向对象编程中,继承基类和接口是很常见的做法。然而,在处理集合时,我们遇到一个明显的限制:为什么不能使用与基类相同的类或接口来定义列表?

考虑以下示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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>(); // 编译器错误

    }

}

登录后复制

尝试将 listOfA 实例化为 List<C> 会导致编译器错误。为了解决这个问题,我们需要找到一个解决方法。

解决方案:显式转换和 LINQ

一种方法是手动遍历列表并将每个元素转换为所需的基类型。这可以使用 ConvertAll 方法实现:

1

List<A> listOfA = new List<C>().ConvertAll(x => (A)x);

登录后复制

另一种使用 LINQ 的解决方案是使用 Cast 运算符转换整个列表:

1

List<A> listOfA = new List<C>().Cast<A>().ToList();

登录后复制

通过使用这些技术,我们可以有效地将派生类的列表转换为其基类型的列表,从而在处理继承方案时具有更大的灵活性。

以上是如何将派生类对象的列表转换为C#中的基类对象列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板