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