Хотя я бы сказал, что это в основном зависит от предпочтений разработчика, лучше вернуть пустую коллекцию.
Допустим, у вас есть объект, который содержит член коллекции.
public class Customer {
private IList<Order> _orders;
public Customer() {
_orders = new List<Order>();
}
public IList<Order> Orders {
get {
return _orders;
}
}
}
Обычно предпочитают, чтобы этот элемент был доступен только для чтения, чтобы заказы его клиентов не терялись без видимой причины.Таким образом, возврат null
не вариант.С пустой коллекцией вы, вероятно, лучше работаете, чем с пустой ссылкой.Таким образом, создание экземпляра коллекции в конструкторе класса является лучшим подходом.
И самое главное, например, при использовании DataBinding вы можете получить странное поведение при возврате пустой ссылки на коллекцию, так как она лучше всего работает свместо этого пустая коллекция.
Другой пример, при выполнении итерации по коллекции, такой как:
foreach (Order o in c.Orders) {
// Do something here...
}
Этот цикл foreach
просто не будет выполняться, когда коллекция пуста, без необходимостисначала проверьте, является ли это пустой ссылкой.Это упрощает код и минимизирует его сложность.
Это зависит от сценария, в котором вы работаете.