ejemplo and c# .net ienumerable icollection

and - ilist c#



¿Cuál es la verdadera ventaja de devolver ICollection<T> en lugar de una lista<T>? (5)

Creo que IList sería más apropiado, pero ...

He leído un par de entradas de blog que mencionan que para las API públicas siempre debemos devolver ICollection (o IEnumerable) en lugar de List. ¿Cuál es la verdadera ventaja de devolver ICollection en lugar de una lista?

¡Gracias!

Duplicado: ¿Cuál es la diferencia entre List (of T) y Collection (of T)?


ICollection es solo una interfaz, mientras que List es una implementación específica de esa interfaz. ¿Qué pasa si más adelante quiere usar algún otro contenedor además de una lista? Si expone públicamente una interfaz de ICollection, puede cambiar su contenedor interno a otro más adelante, siempre que el nuevo contenedor también implemente la interfaz de ICollection.


Le da más libertad al elegir la estructura de datos subyacente.

Una lista asume que la implementación admite la indexación, pero ICollection no lo asume.

Esto significa que si descubre que un conjunto puede proporcionar un mejor rendimiento ya que el orden es irrelevante, entonces es libre de cambiar su enfoque sin afectar a los clientes.

Es una encapsulación básica.


Un enumerador solo devuelve una entidad a la vez al iterar sobre ella. Esto se debe a que utiliza un retorno de rendimiento . Una colección, por otro lado, devuelve toda la lista, lo que requiere que la lista se almacene por completo en la memoria.

La respuesta corta es que los enumeradores son más ligeros y más eficientes.