Практическое различие между List и IEnumerable
Прочитав подобные сообщения, я узнал, что List - это тип IEnumerable. Но мне действительно интересно, какова практическая разница между этими двумя на самом деле.
Кому-то, кто всегда использовал List и никогда не использовал IEnumerable:
- Какова практическая разница между этими двумя?
- В каких сценариях один из них лучше другого?
Вот пример :
Мы хотим сохранить четыре строки, упорядочить их в алфавитном порядке, передать их другой функции и затем показать пользователю результат. Что мы будем использовать и почему?
Надеюсь, кто-то может разобраться в этом для меня или указать мне в правильном направлении.
Спасибо заранее!
Ответы
Ответ 1
Одно важное различие между IEnumerable и List (помимо того, что он является интерфейсом, а другой - конкретным классом) состоит в том, что IEnumerable доступен только для чтения, а List - нет.
Итак, если вам нужна возможность вносить постоянные изменения в вашу коллекцию (добавлять и удалять), вам понадобится List. Если вам просто нужно читать, сортировать и/или фильтровать свою коллекцию, для этой цели достаточно IEnumerable.
Итак, в вашем практическом примере, если вы хотите добавить четыре строки по одному, вам понадобится List. Но если вы создавали экземпляр своей коллекции сразу, вы могли бы использовать IEnumerable.
IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"};
Затем вы можете использовать LINQ для фильтрации или сортировки списка, но вы хотели.
Ответ 2
Многие типы, кроме List, реализуют IEnumerable, такие как ArrayList. Таким образом, одно преимущество заключается в том, что вы можете передавать разные типы коллекций в одну и ту же функцию.