Какой более эффективный способ заставить методы возвращать IList<T>
или IEnumerable<T>
?
IEnumerable<T>
это неизменяемая коллекция, но IList<T>
изменяемая и содержит множество полезных методов и свойств.
Для приведения IList<T>
к IEnumerable<T>
это просто справочная копия:
IList<T> l = new List<T>();
IEnumerable<T> e = l;
Чтобы привести IEnumerable<T>
к List<T>
, нам нужно перебрать каждый элемент или вызвать ToList()
метод:
IEnumerable<T>.ToList();
или может передать IEnumerable<T>
в List<T>
конструктор, который выполняет ту же итерацию где-то в своем конструкторе.
List<T> l = new List<T>(e);
Какие случаи вы считаете более эффективными? Что вы предпочитаете больше в своей практике?