Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# T[]是否执行IList<;T>;?_C# - Fatal编程技术网

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有。。。最终;-)