我正在尝试将A的列表传递DerivedClass给采用的列表的函数BaseClass,但出现错误:
cannot convert from
'System.Collections.Generic.List<ConsoleApplication1.DerivedClass>'
to
'System.Collections.Generic.List<ConsoleApplication1.BaseClass>'
现在,我可以将其强制List<DerivedClass>转换为List<BaseClass>,但是这样做不舒服,除非我理解为什么编译器不允许这样做。
我发现的解释只是说它某种程度上违反了类型安全性,但我没有看到它。谁能帮我吗?
编译器允许从List<DerivedClass>到转换的风险是什么List<BaseClass>?
这是我的SSCCE:
class Program
{
public static void Main()
{
BaseClass bc = new DerivedClass(); // works fine
List<BaseClass> bcl = new List<DerivedClass>(); // this line has an error
doSomething(new List<DerivedClass>()); // this line has an error
}
public void doSomething(List<BaseClass> bc)
{
// do something with bc
}
}
class BaseClass
{
}
class DerivedClass : BaseClass
{
}
慕村225694
慕哥9229398
Smart猫小萌
相关分类