C# 数组不';t实施ICollection<;T>;但这是可转让的

C# 数组不';t实施ICollection<;T>;但这是可转让的,c#,arrays,icollection,C#,Arrays,Icollection,看看这段疯狂的代码: ICollection<int> list = new[] {1, 2, 3}; list.Add(4); // NotSupportedException: Collection was of a fixed size. ICollection list=new[]{1,2,3}; 列表。添加(4);//NotSupportedException:集合的大小是固定的。 我不想知道有什么例外!我想知道是否可以将一个简单的数组分配给ICollection。我看

看看这段疯狂的代码:

ICollection<int> list = new[] {1, 2, 3};
list.Add(4); // NotSupportedException: Collection was of a fixed size.
ICollection list=new[]{1,2,3};
列表。添加(4);//NotSupportedException:集合的大小是固定的。
我不想知道有什么例外!我想知道是否可以将一个简单的数组分配给
ICollection
。我看到
Array
实现了
IList
ICollection
,但据我所知,它从未实现
ICollection

我看到数组实现了IList和ICollection,但据我所知 从不执行ICollection

它确实实现了
ICollection
,实现只是在运行时注入

从:

从.NET Framework 2.0开始,Array类实现
System.Collections.Generic.IList
System.Collections.Generic.ICollection
,以及
System.Collections.Generic.IEnumerable
Generic接口最新版本 实现在运行时提供给阵列,因此, 通用接口不会出现在的声明语法中 数组类。此外,接口没有参考主题 只能通过将数组强制转换为泛型来访问的成员 接口类型(显式接口实现)成功的关键 请注意,当您将数组强制转换到这些接口之一时 添加、插入或删除元素的成员抛出 不支持例外情况。


如果链接的问题/答案不足以回答您的问题,我(或其他人)将重新打开实现
ICollection
的问题。这也在文章中提到,但有点隐藏:“从.NET Framework 2.0开始,
Array
类实现了
System.Collections.Generic.IList
System.Collections.Generic.ICollection
System.Collections.Generic.IEnumerable
通用接口。实现是在运行时提供给数组的,因此,通用接口不会出现在数组类的声明语法中。“@TimSchmelter谢谢。这就是答案!是的,这就是答案。但是人们会这样做吗。这是一个滴答作响的定时炸弹!如何在运行时注入接口?