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.
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.
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
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.