Каково реальное преимущество возврата ICollection <T> вместо Списка <T>? [дубликат]

15
задан Community 23 May 2017 в 12:10
поделиться

5 ответов

Перечислитель только возвращает один объект за один раз, поскольку Вы выполняете итерации по нему. Это вызвано тем, что это использует возврат урожая . Набор, с другой стороны, возвращает весь список, требуя что список быть сохраненным полностью в памяти.

короткий ответ - то, что перечислители легче и более эффективны.

2
ответ дан 1 December 2019 в 05:19
поделиться

Это дает Вам больше свободы при выборе Базовой структуры данных.

Список А предполагает, что индексация поддержки внедрения, но ICollection не делает такого предположения.

Это означает, что, если Вы обнаруживаете, что Набор мог бы обеспечить лучшую производительность, так как упорядочивание не важно, затем Вы свободны изменить свой подход, не влияя на клиенты.

Это - основная инкапсуляция.

2
ответ дан 1 December 2019 в 05:19
поделиться

ICollection является просто интерфейсом, в то время как Список является определенной реализацией того интерфейса. Что, если Вы хотели позже использовать некоторый другой контейнер помимо списка? При общедоступном представлении интерфейса ICollection можно изменить внутренний контейнер на что-то еще позже - пока новый контейнер также реализует интерфейс ICollection.

0
ответ дан 1 December 2019 в 05:19
поделиться

Я думал бы, что IList будет более соответствующим, но...

1
ответ дан 1 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

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