【发布时间】:2014-04-18 07:35:18
【问题描述】:
我有一个将IList<IElement> 作为参数的类构造函数。
创建类的新实例时,我可以传递 IElement[] 而不是 IList<IElement> 这怎么可能?
【问题讨论】:
-
"How and why is this possible?"- 你应该为点击诱饵或措辞不当的标题获得一个徽章。 -
@RoyiNamir .. 但这与数组协方差无关。
-
@royi 这种行为来自编译器为您实现数组类型的接口,出于各种原因。
-
@RoyiNamir 即使它是不变的,您仍然可以将
IElement[]转换为IList<IElement>,因为一维数组在运行时提供了这个实现。T[]实现IList<T>。请参阅 Adam Houldsworth 链接的帖子。
标签: c#