C# 将列表转换为父类列表 公共类基类{} 派生的公共类:基类{} public List derivedList=新列表(); public List baseList=derivedList as List;
derivedList无法转换回父类的列表中 有办法解决这个问题吗?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
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>;