Przez bardzo długi czas był ciekawy następujące:W jaki sposób tablice implementują IList <T> bez implementowania właściwości "Count" w języku C#?
int[] array = new int[1];
int iArrayLength = array.Length; //1
Ponieważ matryce realizacji IList interfejs następuje dozwolony:
int iArrayCount = ((IList<int>)array).Count; //still 1
Ale:
int iArrayCount = array.Count; //Compile error. WHY?
int iArrayLength = array.Length; //This is what we learned at school!
The pytanie: W jaki sposób tablica może implementować IList<T>
(szczególnie właściwość int Count { get; }
z IList<T>
) bez zezwolenia na użycie go w klasie bazowej?
Można prawdopodobnie symulować ten sam przez shadowing „count” właściwość z klasy bazowej w swoim własnym dziedziczonej klasie, i uczynić go prywatnym zamiast. VB.NET ma do tego jawne słowo kluczowe "Cienie", nie jestem pewien co do C#, ale. –
Twój tytuł jest błędny. Tablice faktycznie implementują 'Count' z [' ICollection'] (http://msdn.microsoft.com/en-us/library/system.collections.icollection.count.aspx): 'int ICollection.Count \t \t { \t \t \t dostać \t \t \t { \t \t \t \t zwrot ten.Długość; \t \t \t} \t \t} ' –
@TimSchmelter ale' IList 'dziedziczy' interfejs ICollection '; 'ICollection ' również ma właściwość 'Count', więc wszystkie typy implementujące' IList 'muszą również implementować' ICollection .Count'. To prawda, właściwość nie jest zdefiniowana w 'IList ', ale pytanie jest uzasadnione. –
phoog