假设我有这样的功能:
public List<int> func()
{}
现在,由于某种原因,我没有任何东西要放入列表中,所以我只会返回“空的东西”。 根据一个好的做法,我应该在上面的函数中返回以下三个中的哪一个?
return null;
return new List<int>();
return default(List<int>); //Is this the same thing as the one above?
答案 0 :(得分:7)
返回一个空列表:
return new List<int>();
default(List<int>)
将返回null
;不是空名单!
返回空列表可防止在每次调用函数后进行过多的空值检查。见Is it better to return null or empty collection?
答案 1 :(得分:3)
返回一个空列表。当您返回null时,您必须在调用func
。
答案 2 :(得分:3)
这取决于;例如,如果由于某种原因你没有任何项目,也许你应该抛出异常而不是返回任何东西?
如果返回类型为空是可以接受的,那么我个人建议使用null object pattern。
在任何情况下,最重要的因素可能是您的其他代码在类似情况下所做的事情。即一致性是一个主要因素。所以 - 如果你在其他地方返回空对象,那么就这样做。如果你返回null,那就这样做。
答案 3 :(得分:1)
我会说:
return Enumerable.Empty<int>();