Esta podría ser una vieja pregunta: ¿Por qué IEnumerable<T>
hereda de IEnumerable
?¿Por qué IEnumerable <T> hereda de IEnumerable?
Así es como lo hace .NET, pero trae un pequeño problema. Cada vez que escribo una clase implementa IEumerable<T>
, tengo que escribir dos funciones GetEnumerator()
, una para IEnumerable<T>
y la otra para IEnumerable
.
Y, IList<T>
no hereda de IList.
No sé por qué IEnumerable<T>
está diseñado de otra manera.
Eso es interesante ... Me enfadó mucho que 'IList' no heredó 'IList', pero tan pronto como se toma en cuenta la varianza comienza a tener sentido ... –
Es una lástima que Microsoft nunca haya definido IReadableByIndex e IReadableByIndex (Of Out T), que podría haber sido heredado por IList e IList (Of T). IReadableByIndex podría ser heredado por IReadableByIndex (Of T) sin dificultad, y la varianza de las colecciones indexables de solo lectura habría sido muy buena. – supercat
@supercat Microsoft puede haber escuchado sus oraciones, porque desde que escribió ese comentario, han introducido ['IReadOnlyList'] (http://msdn.microsoft.com/en-us/library/hh192385.aspx) donde el 'out' significa covarianza en' T'. –