这段代码:
int[] myArr = { 1, 2 };
myArr.Add(3);
在构建时会抛出以下错误:
错误 CS1061:'System.Array'不包含 'Add' 的定义,并且没有接受类型为 'System.Array' 的第一个参数的扩展方法 'Add' 可用(您是否缺少 using 指令或程序集引用?)
IList
接口有 Add()
方法,但是为什么 Array 没有实现它呢?
更新:从答案中我看到它确实明确地实现了,好的,我明白了,谢谢,我应该更好地坚持问题:
为什么 Array
实际上没有提供 Add()
,或者更好的说法是,为什么它必须首先实现 IList
?它可以是另一个接口(例如 IArray
),该接口只能包含对于 Array 有用的 IList
成员 - 例如 IsFixedSize
、IsReadOnly
、IndexOf()
... 这只是一个想法。
IList
,那么您将能够调用Add
(类可以显式实现一些接口,这意味着当将其作为该接口处理时,您仅获得访问该接口的所有方法)。然而,你会失望的。数组具有固定的大小。 - Damien_The_UnbelieverIList
接口 - 但如果你想将其用作IList
,你必须将其强制转换为该类型的变量。 - Damien_The_Unbeliever