web-dev-qa-db-fra.com

Que dois-je utiliser un IEnumerable ou IList?

Quelqu'un peut-il me dire quand je devrais utiliser l'un ou l'autre?.

Par exemple, je pense que je devrais utiliser un IList lorsque je souhaite accéder au .Count de la collection ou à un élément individuel, n'est-ce pas?

Je vous remercie.

50
Sergio Tapia

D'une manière générale, vous devez essayer d'utiliser le type le moins spécifique qui convient à votre objectif. IEnumerable est moins spécifique que IList (IList implémente IEnumerable) donc à moins que vous ne vouliez quelque chose de spécifique de IList (comme Count comme vous le suggérez, ou peut-être Add, Delete, etc.), j'utiliserais IEnumerable.

Un avantage de rester avec IEnumerable est que vous pouvez écrire des méthodes d'itérateur pour renvoyer ce type (recherchez "yield return" et méthodes d'itérateur si vous ne les connaissez pas). Cela vous permet d'écrire des "pipelines" très efficaces en mémoire pour vos boucles.

66
Rob Levine

Vous utilisez IEnumerable lorsque vous souhaitez parcourir les éléments d'une collection.

IList est lorsque vous souhaitez ajouter, supprimer et accéder au contenu de la liste dans le désordre.

IList vs IEnumerable pour les collections sur les entités

http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=722

23
kemiller2002

Vous devez utiliser IList lorsque vous avez besoin d'accéder par index à votre collection, ajouter et supprimer des éléments, etc., et IEnumerable lorsque vous avez juste besoin d'énumérer votre collection.

Une réponse très simple, je peux la prolonger si vous décrirez votre scénario.

8
Restuta