为什么C#编译器不允许泛型集合中的多态类型(T)参数(即List [T])?
以"A"和"B"为例,其中"B"是"A"的子类
class A { }
class B : A { }
Run Code Online (Sandbox Code Playgroud)
并考虑一个带有'A'类型列表的函数
void f(List<A> aL) { }
Run Code Online (Sandbox Code Playgroud)
用"B"类型的列表调用
List<B> bL = new List<B>();
f(bL);
Run Code Online (Sandbox Code Playgroud)
给出以下错误
ERROR: cannot convert from List<B> to List<A>
Run Code Online (Sandbox Code Playgroud)
违反了什么语义规则?
除此之外,还有一个"优雅"的意思,除了循环和铸造每个元素(我想要一些糖)?谢谢.