Это всегда хорошая идея использовать интерфейсы в подобных ситуациях, а не в классах.
Причин, по которым здесь слишком много, чтобы их использовать, но, например, это значительно увеличивает гибкость, поскольку любому классу просто нужно реализовать интерфейс IList<T>
, чтобы его можно было присвоить возвращаемому значению этой функции. Классы будут реализовывать этот (или другой) интерфейс без подкласса List (или его эквивалента).
В общем, вы хотите использовать «самый низкий» иерархический интерфейс, который соответствует требованиям. В этом случае вы можете рассмотреть ICollection или даже IEnumerable вместо IList.
Не имеет значения, какой экземпляр класса вы возвращаете из функции, поскольку возвращается только «интерфейс», поэтому он может быть назначен любому классу, реализующему этот интерфейс (опять же, max flexibilty?)
Часто функция, возвращающая некоторый объект IEnumerable, будет в основном использоваться внутри цикла foreach.