【发布时间】:2016-11-02 05:45:45
【问题描述】:
这段代码:
int[] myArr = { 1, 2 };
myArr.Add(3);
在构建时抛出以下错误:
错误 CS1061:“System.Array”不包含“Add”的定义,并且找不到接受“System.Array”类型的第一个参数的扩展方法“Add”(您是否缺少 using 指令或汇编参考?)
IList接口有Add()方法,但是为什么Array没有实现呢?
更新:我从答案中看到它确实明确地实现了它,好的,我明白了,谢谢,我最好坚持这个问题:
为什么Array 实际上没有提供 Add(),或者,更好的是,为什么它必须首先实现IList?除了实现IList,它可以是另一个接口(例如IArray),它可能只对IList的数组成员有用-例如。 IsFixedSize、IsReadOnly、IndexOf()...只是一个想法。
【问题讨论】:
-
如果你把它转换成
IList,你就可以调用Add(类可以实现一些接口explicitly,这意味着你只能访问(全部)将其视为该接口时的接口方法)。不过你会失望的。数组有固定的大小。 -
那为什么语言不简单地从 Array 类签名中删除 :IList 呢?
-
它没有。 Array 实现了
IList- 但如果你想将它作为IList使用,你必须将它转换为该类型的变量。 -
@Damien_The_Unbeliever,抱歉我更正了这个问题,我的意思是为什么它没有删除它!
-
这能回答你的问题吗? Why array implements IList?
标签: c# list system.array