一个函数应该返回什么?

时间:2014-08-10 08:22:52

标签: c#

假设我有这样的功能:

public List<int> func()
{}

现在,由于某种原因,我没有任何东西要放入列表中,所以我只会返回“空的东西”。 根据一个好的做法,我应该在上面的函数中返回以下三个中的哪一个?

return null;
return new List<int>();  
return default(List<int>);  //Is this the same thing as the one above?

4 个答案:

答案 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>();