Para un tiempo muy largo Tenía curiosidad acerca de lo siguiente:¿Cómo implementa Arrays IList <T> sin implementar la propiedad "Recuento" en C#?
int[] array = new int[1];
int iArrayLength = array.Length; //1
Desde arrays implementan la interfaz IList, se permite lo siguiente:
int iArrayCount = ((IList<int>)array).Count; //still 1
PERO:
int iArrayCount = array.Count; //Compile error. WHY?
int iArrayLength = array.Length; //This is what we learned at school!
El pregunta: ¿Cómo puede una matriz implementar IList<T>
(especialmente la propiedad int Count { get; }
desde IList<T>
) sin permitir que se use en la clase base?
Probablemente se podría simular este mismo sombreando la propiedad 'conde' de la clase base en su propia clase heredada, y hacerlo privado en su lugar. VB.NET tiene una palabra clave explícita 'Sombras' para esto, no está seguro acerca de C#, sin embargo. –
Tu título es erróneo. Las matrices realmente implementan 'Count' desde [' ICollection'] (http://msdn.microsoft.com/en-us/library/system.collections.icollection.count.aspx): 'int ICollection.Count \t \t { \t \t \t obtener \t \t \t { \t \t \t \t vuelta esto.Longitud; \t \t \t} \t \t} '' pero –
@TimSchmelter IList '' hereda de ICollection '; 'ICollection ' también tiene una propiedad 'Count', por lo que todos los tipos que implementen' IList 'también deben implementar' ICollection .Count'. Es cierto que la propiedad no está definida en 'IList ', pero la pregunta es razonable. –
phoog