2010-11-15 21 views

Respuesta

70

Un List<string> es una aplicación concreta de IEnumerable<string>. La diferencia es que IEnumerable<string> es simplemente una secuencia de string pero un List<string> es indexable por un índice int, se puede agregar y eliminar y tener elementos insertados en un índice en particular.

Básicamente, la interfaz IEnumerable<string> le permite transmitir el string en la secuencia pero List<string> le permite hacer esto, así como modificar y acceder a los elementos en las listas de maneras específicas. Un IEnumerable<string> es una secuencia general de string que puede iterarse pero no permite el acceso aleatorio. A List<string> es una colección específica de tamaño variable de acceso aleatorio.

+4

Esta respuesta fue más útil que las de http://stackoverflow.com/questions/764748/whats-the-difference-between-ienumerable-and-array-ilist-and-list – JYelton

+0

¿Qué significa una implementación concreta? ¿Significa que una lista hereda de ienumerable? – user1534664

+1

@ user1534664: No. Significa que hereda de 'IEnumerable' * y * no es abstracto, de hecho es construible. – jason

4

IEnumerable<T> es una interfaz. Debe ser implementado.

List<T> es una implementación de IEnumerable<T>

2

El primero es un hormigón List de cadenas, el otro es cualquier clase que implementa IEnumerable<string>

10

diferente.

IEnumerable le permite iterar a través de la colección utilizando un bucle for-each.

e IEnumerable solo tiene el método GetEnumerator.

Y lista implementar muchas interfaces como IEnumerable, Ilist, etc. Tantos funcionan en la lista.

En rendimiento IEnumerable más rápido que List.

Cuestiones relacionadas