C# T[]是否执行IList<;T>;?
我有一个类构造函数,它将C# T[]是否执行IList<;T>;?,c#,C#,我有一个类构造函数,它将IList作为参数 创建类的新实例时,我能够传递一个IElement[]而不是IList这是怎么可能的?元素类型为T的数组派生自IList 这在mscorlib.dll的元数据中不可见,但继承关系是在运行时在CLR中创建的。C#和CLR知道数组类型,并对其进行特殊处理。请参阅:“这是如何实现的,以及为什么实现的?”-您应该为clickbait或措辞不当的标题获得徽章。@RoyiNamir。。但这与数组协方差无关。@royi此行为来自编译器为您实现数组类型接口的各种原因。@
IList
作为参数
创建类的新实例时,我能够传递一个
IElement[]
而不是IList
这是怎么可能的?元素类型为T
的数组派生自IList
这在mscorlib.dll的元数据中不可见,但继承关系是在运行时在CLR中创建的。C#和CLR知道数组类型,并对其进行特殊处理。请参阅:
“这是如何实现的,以及为什么实现的?”
-您应该为clickbait或措辞不当的标题获得徽章。@RoyiNamir。。但这与数组协方差无关。@royi此行为来自编译器为您实现数组类型接口的各种原因。@RoyiNamir即使它是不变的,您仍然可以将IElement[]
转换为IList
,这仅仅是因为一维数组是在运行时实现的<代码>T[]实现IList
。请参阅亚当·霍尔德斯沃思链接的帖子。确实如此;-)@TimSchmelter有。。。最终;-)