c# - Why array implements IList? -
see definition of system.array class
public abstract class array : ilist, ...
theoretically, should able write bit , happy
int[] list = new int[] {}; ilist ilist = (ilist)list;
i should able call method ilist
ilist.add(1); //exception here
my question not why exception, rather why array implements ilist?
because array allows fast access index, , ilist
/ilist<t>
collection interfaces support this. perhaps real question "why there no interface constant collections indexers?" , have no answer.
there no readonly interfaces collections either. , i'm missing more constant sized indexers interface.
imo there should several more (generic) collection interfaces depending on features of collection. , names should have been different too, list
indexer stupid imo.
- just enumeration
ienumerable<t>
- readonly no indexer (.count, .contains,...)
- resizable no indexer, i.e. set (add, remove,...) current
icollection<t>
- readonly indexer (indexer, indexof,...)
- constant size indexer (indexer setter)
- variable size indexer (insert,...) current
ilist<t>
i think current collection interfaces bad design. since have properties telling methods valid(and part of contract of these methods) doesn't break substitution principle.
Comments
Post a Comment