相关疑难解决方法(0)

通用集合中的多态类型参数

为什么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)

违反了什么语义规则?

除此之外,还有一个"优雅"的意思,除了循环和铸造每个元素(我想要一些糖)?谢谢.

c# generics

11
推荐指数
2
解决办法
4072
查看次数

标签 统计

c# ×1

generics ×1