Что я должен использовать IEnumerable или IList? [дубликат]

Этот вопрос уже имеет ответ здесь:

Может любой говорить мне, когда я должен буду использовать также.

Например, я думаю, что должен использовать IList, когда я хочу получить доступ к.Count набора или отдельного объекта, корректного?

Спасибо.

48
задан Rob Levine 12 July 2010 в 13:15
поделиться

3 ответа

Вообще говоря, вы должны попытаться использовать наименее специфичный тип, который подходит для вашей цели. IEnumerable менее специфичен, чем IList (IList реализует IEnumerable), так что если вам не нужно что-то конкретное от IList (например, Count, как вы предлагаете, или, возможно, Add, Delete и т.д.), я бы использовал IEnumerable.

Одним из преимуществ использования IEnumerable является то, что вы можете писать методы-итераторы для возврата этого типа (поищите "yield return" и методы-итераторы, если вы не знакомы с ними). Это позволяет вам писать очень экономичные по памяти "конвейеры" для ваших циклов.

73
ответ дан 26 November 2019 в 18:41
поделиться

Вы используете IEnumerable, когда хотите перебирать элементы в коллекции.

IList используется, когда вы хотите добавлять, удалять и получать доступ к содержимому списка в произвольном порядке.

IList vs IEnumerable для коллекций на сущностях

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

23
ответ дан 26 November 2019 в 18:41
поделиться

Вы должны использовать IList, когда вам нужен доступ по индексу к вашей коллекции, добавление и удаление элементов и т.д., и IEnumerable, когда вам нужно просто перечислить вашу коллекцию.

Очень простой ответ, я могу расширить его, если вы опишите свой сценарий.

8
ответ дан 26 November 2019 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: