IEnumerable<T>
- более общий интерфейс, поэтому вы можете заменить все, что реализует этот интерфейс, для вашей операции. Если у вас есть этот метод:
public void DoSomething(IEnumerable<T> enumerable) {
}
Он будет работать с массивами, коллекциями, списками, словарями и всем остальным, что реализует интерфейс.
Если указать, что объект является List<T>
, метод будет работать только на List<T>
объектах или экземплярах, которые наследуются от него.
Преимущество использования List<T>
состоит в том, что списки имеют гораздо больше возможностей, чем перечислимые. Когда вам нужны эти функции (вставка, поиск, преобразование и многое другое), List<T>
или IList<T>
более уместно.