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

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

Linda Hamilton
发布: 2025-02-01 17:56:40
原创
345 人浏览过

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中文网其他相关文章!

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