Предположим, у меня есть метод
public List<User> GetBatchOfUsers(IEnumerable<int> userIDs)
{
List<User> users = new List<User>();
// some database stuff
return users;
}
Я прочитал, что было бы лучше вернуть интерфейс (либо IListили IEnumerable), а не возвращать List. Некоторые аргументы, которые я слышал для этого, заключаются в том, что он скрывает данные и дает разработчику API возможность изменить внутреннее представление данных на более позднем этапе.
Моя проблема с возвратом IEnumerable- это потеря функциональности, такой как произвольный доступ и Countсобственность.
Я знаю, что принятие IEnumerableв качестве параметра имеет смысл, поскольку оно дает потребителю наилучшую гибкость при отправке данных моему методу, минимальный набор требований для работы метода.
Какова наилучшая практика для типа возврата?