С декларацией способ# - интерфейс IEnumerable против списка


Это действительно лучшая практика, чтобы использовать IEnumerable<T> в объявлении метода, вместо List<T>?

Method1(IEnumerable<T> collections);

Method2(List<T> collections);


183
-4
c#
задан 4 февраля 2018 в 05:02 Источник Поделиться
Комментарии
1 ответ

Что все зависит от того, что Method1 делает. Если у вас есть такая подпись:

void Method1(IEnumerable<T> items);

Затем, когда я использую ваш метод, вы говорите мне (по подписи), что вы не будете добавлять к позиции, а просто идя по ним. Другими словами, вы будете использовать только методы IEnumerable.

Однако, если подпись будет такой:

void Method1(List<T> items);

Затем он говорит мне, что вы можете добавлять, удалять элементы из списка я предоставить свой способ (или любой другой метод, предоставляемые List<T>). Поэтому, если я не хочу, чтобы вы добавить/удалить пункты в моем списке, я создам копию моего списка и дать вам копию. Вот кстати мой список в безопасности от вас.

Поэтому все зависит от того, какой метод делает или должен делать. Рекомендуется для минимальной ... для наиболее общего интерфейса. Если все, что вам нужно сделать, это цикл по элементам, потом не просите List<T> но просить IEnumerable<T>.

2
ответ дан 4 февраля 2018 в 06:02 Источник Поделиться