Этот вопрос уже имеет ответ здесь:
Может любой говорить мне, когда я должен буду использовать также.
Например, я думаю, что должен использовать IList, когда я хочу получить доступ к.Count набора или отдельного объекта, корректного?
Спасибо.
Вообще говоря, вы должны попытаться использовать наименее специфичный тип, который подходит для вашей цели. IEnumerable
менее специфичен, чем IList
(IList
реализует IEnumerable
), так что если вам не нужно что-то конкретное от IList
(например, Count
, как вы предлагаете, или, возможно, Add
, Delete
и т.д.), я бы использовал IEnumerable
.
Одним из преимуществ использования IEnumerable
является то, что вы можете писать методы-итераторы для возврата этого типа (поищите "yield return" и методы-итераторы, если вы не знакомы с ними). Это позволяет вам писать очень экономичные по памяти "конвейеры" для ваших циклов.
Вы используете IEnumerable, когда хотите перебирать элементы в коллекции.
IList используется, когда вы хотите добавлять, удалять и получать доступ к содержимому списка в произвольном порядке.
IList vs IEnumerable для коллекций на сущностях
http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=722
Вы должны использовать IList, когда вам нужен доступ по индексу к вашей коллекции, добавление и удаление элементов и т.д., и IEnumerable, когда вам нужно просто перечислить вашу коллекцию.
Очень простой ответ, я могу расширить его, если вы опишите свой сценарий.