C#中的继承和容器

Tit*_*tan 3 c# inheritance containers upcasting

我在这里工作,让我说我有:

class A
{}

class B : A
{}

List<B> myList;
Run Code Online (Sandbox Code Playgroud)

我想,在代码的一部分中投射此myList,List< A>,但是当我尝试时,我收到一个错误:

List<A> myUpcastedList = (List<A>)myList; //not working
Run Code Online (Sandbox Code Playgroud)

有可能做到吗?如果是的话,语法是什么?

Mar*_*zek 5

List<B>无法投入List<A>.你必须创建新的List<A>并用源纪念品填充它.你可以使用LINQ to Objects:

var aList= bList.Cast<A>().ToList();
Run Code Online (Sandbox Code Playgroud)

您还应该阅读一些关于协方差和逆变的内容,例如Eric Lippert的博客