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