首页 >后端开发 >C++ >如何将列表转换为C#中的列表?

如何将列表转换为C#中的列表?

Linda Hamilton
Linda Hamilton原创
2025-02-01 17:56:40431浏览

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

C# 中将 List<派生类> 转换为 List<基类>

面向对象编程中的继承允许派生类继承其基类的属性和方法。然而,有时不清楚为什么这种继承不能应用于像 List 这样的泛型集合。

考虑以下示例:

<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>

在此代码中,编译器错误发生是因为 List 无法隐式转换为 List。即使类 C 继承自接口 A,编译器也不能自动将派生类的集合转换为其基类的集合。

为了解决这个问题,有两种方法:

使用 ConvertAll

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

ConvertAll 方法接受一个函数作为参数,并通过将该函数应用于源列表的每个元素来创建一个新列表。在本例中,函数 (x => (A)x) 将 List 的每个元素强制转换为类型 A。

使用 LINQ

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

LINQ 的 Cast() 方法允许您将一种类型的列表转换为另一种类型的列表。通过将 List 转换为 List,然后将其转换为 List,您可以从派生类对象的集合创建一个基类对象的集合。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn