当我使用返回IEumerable
的方法时,首先我检查它是否为Null值,然后检查它,是否有任何项目。
public IEnumerable<Order> GetOrdersByServiceName(string serviceName)
{
if (IsValidService(serviceName))
return null;
var orders = GetValidOrder(serviceName);
return orders;
}
用法:
var orders=GetOrdersByServiceName("TestService");
if(orders == null or !orders.any())
//do something
如果GetOrdersByServiceName
返回Null并且我忘记了Null检查,Code会在某种情况下抛出Null Reference Exception。我想要消除orders == null
并在!orders.any()
语句中使用If
。
我认为两个条件具有相同的语义并且告诉我结果是 nothing (空对象模式):
要意识到我的团队中的所有开发人员都必须确保每个返回IEnumerable的方法,返回`Enumerable.Empty()而不是Null值。
我的问题是:是否存在调用方法-Null或Empty Array的结果对调用方法有不同语义的情况?