Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将列表转换为父类列表 公共类基类{} 派生的公共类:基类{} public List derivedList=新列表(); public List baseList=derivedList as List;_C#_Unity3d - Fatal编程技术网

C# 将列表转换为父类列表 公共类基类{} 派生的公共类:基类{} public List derivedList=新列表(); public List baseList=derivedList as List;

C# 将列表转换为父类列表 公共类基类{} 派生的公共类:基类{} public List derivedList=新列表(); public List baseList=derivedList as List;,c#,unity3d,C#,Unity3d,derivedList无法转换回父类的列表中 有办法解决这个问题吗?List baseList=derivedList.Cast().ToList(); public class Base {} public class Derived : Base {} public List<Derived> derivedList = new List<Derived>(); public List<Base> baseList = derivedList as L

derivedList无法转换回父类的列表中

有办法解决这个问题吗?

List baseList=derivedList.Cast().ToList();
public class Base {}
public class Derived : Base {}

public List<Derived> derivedList = new List<Derived>();

public List<Base> baseList = derivedList as List<Base>;

在.Net中,这是设计不允许的。原因是
列表
在变量中是,而不是共同变量。您可以将
列表
更改为
IEnumerable
,它将工作:

List<Base> baseList = derivedList.Cast<Base>().ToList();
public IEnumerable baseList=derivedList作为IEnumerable;
但是,如果您想将新项目添加到
基本列表
,则可以通过@K N使用另一个答案


另外,你可以阅读有关协方差和逆方差的文章。(来自)

我特别推荐Eric Lippert的两个视频:


public IEnumerable<Base> baseList = derivedList as IEnumerable<Base>;