返回空数组而不是Null以进行内存中收集

时间:2018-03-26 09:53:41

标签: c# ienumerable

当我使用返回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 (空对象模式):

  • !orders.any()
  • orders == null

要意识到我的团队中的所有开发人员都必须确保每个返回IEnumerable的方法,返回`Enumerable.Empty()而不是Null值。

我的问题是:是否存在调用方法-Null或Empty Array的结果对调用方法有不同语义的情况?

0 个答案:

没有答案