Что более эффективный способ вернуть методы 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);
Какие случаи вы считаете более эффективными? Что вы предпочитаете больше в своей практике?