This code:
int[] myArr = { 1, 2 };
myArr.Add(3);
throws on Build:
error CS1061: 'System.Array' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)
IList
interface has the Add()
method, but why the Array does not implement it?
UPDATE: I see from the answers that it DOES implement it explicitly, OK, I get it, thank you, I should better stick to the question:
Why Array
does not actually provide Add()
, OR, better, why did it have to implement IList
in the first place? Instead of implementing IList
, it could be another interface (e.g. IArray
) which could have ONLY the useful for Array members of IList
-e.g. IsFixedSize
, IsReadOnly
, IndexOf()
... just a thought.
Of course it does via explicit implementation (there is no way to implement interface and not implement some members).
Well, mainly to indicate that it supports indexer.
But in fact array implements one of the valid
IList
usages. TheIList
interface has a property calledIsFixedSize
, which according to the documentationand then
So array implementation returns
IsFixedSize = true
and throwsNotSupportedException
insideAdd
,Insert
,Remove
andRemoveAt
methods.