Предположим, у меня есть метод
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
в качестве параметра имеет смысл, поскольку оно дает потребителю наилучшую гибкость при отправке данных моему методу, минимальный набор требований для работы метода.
Какова наилучшая практика для типа возврата?