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
为了解决这个问题,有两种方法:
使用 ConvertAll
<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>
ConvertAll 方法接受一个函数作为参数,并通过将该函数应用于源列表的每个元素来创建一个新列表。在本例中,函数 (x => (A)x) 将 List
使用 LINQ
<code class="language-csharp">List<A> listOfA = new List<C>().Cast<A>().ToList();</code>
LINQ 的 Cast
以上是如何将列表转换为C#中的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!