我有一个类构造函数,它接受一个IList<IElement>作为参数。
IList<IElement>
当创建该类的新实例时,我可以传递IElement[]而不是IList<IElement>,这怎么可能?
IElement[]
T[]
IList<T>
具有元素类型 T 的数组源自于 IList<T>。
T
这在 mscorlib.dll 的元数据中不可见,但继承关系在 CLR 中运行时创建。C# 和 CLR 知道数组类型并对其进行特殊处理。
T[]
实现了IList<T>
这一事实。它指的是数组如何通过接口实现协变性和需要通过这些接口维护协变性等完全独立但相关的属性。 - Servy