数组不实现ICollection <t>但可分配

时间:2016-02-26 14:13:02

标签: c# arrays icollection

看看这段疯狂的代码:

transport: gmail

我不想知道这个例外!我想知道可以将一个简单的数组分配给ICollection<int> list = new[] {1, 2, 3}; list.Add(4); // NotSupportedException: Collection was of a fixed size. 。我看到ICollection<T>实现ArrayIList但据我所知它从未实现ICollection

1 个答案:

答案 0 :(得分:3)

  

我看到Array实现了IList和ICollection,但据我所知   永远不会实现ICollection

它实现了ICollection<T>,实现只是在运行时注入。

来自documentation

  

从.NET Framework 2.0开始,Array类实现了   System.Collections.Generic.IList<T>,   System.Collections.Generic.ICollection<T>,和   System.Collections.Generic.IEnumerable<T>通用接口。的的   实现在运行时提供给数组,因此,   通用接口不会出现在声明语法中   数组类。此外,没有关于接口的参考主题   只能通过将数组转换为泛型来访问的成员   接口类型(显式接口实现)。 关键的事情   请注意何时将数组转换为其中一个接口   添加,插入或删除元素的成员   NotSupportedException异常。