2010-07-12 35 views

Respuesta

37

En general, usted debe tratar de utilizar el tipo menos específico que se adapte a su propósito. IEnumerable es menos específico que IList (IList implementa IEnumerable) así que a menos que desee algo específico de IList (como .Count como sugiere, o tal vez Agregar, Eliminar, etc.), usaría IEnumerable.

Una de las bonitas adiciones que obtiene de su permanencia en IEnumerable es que puede escribir métodos de iterador para devolver este tipo (busque "retorno de rendimiento" y métodos de iterador si no está familiarizado con ellos). Esto le permite escribir "tuberías" muy eficientes en memoria para sus bucles.

+2

Estoy de acuerdo con el uso del tipo menos derivado. ICollection <> es suficiente para agregar/eliminar. –

+0

@Mark H - buen punto - para la mayoría de las operaciones de agregar/eliminar, incluso IList es innecesariamente específico. –

+0

IList * implementa * IEnumerable ?! –

3

usted debe utilizar IList cuando se necesita el acceso de índice para su colección, añadir y eliminar elementos, etc., y IEnumerable cuando se necesita simplemente enumerar más de su colección.

Una respuesta muy simple, puedo extenderla si usted describe su situación.