我应该返回'null'还是空数组?

Gar*_*mel 16 .net coding-style

假设您有一个方法应该创建并返回某种类型的数组.如果数组没有填充,该怎么办?你返回一个空数组还是null/nothing?

Gre*_*ech 28

在.NET中,最好返回一个空数组而不是null,因为它保存了调用者必须写入空检查和/或冒险a NullReferenceException; 你会发现这是基类库中的常见模式.你不会这样做的唯一情况是在不太可能的情况下,空数组和null具有不同的语义含义.

官员阵列使用指南状态:

一般规则是null,空字符串("")和空(0项)数组应该以相同的方式处理.返回一个空数组而不是空引用.

这就是说,如果你使用.NET 2.0或更高版本,更好的做法是返回一个IEnumerable<T>或它的可扩展衍生物如之一Collection<T>,ReadOnlyCollection<T>,ICollection<T>IList<T>(在这种情况下,我仍然倾向于,而不是返回空的空单).有关为什么这些应该首选的更多信息可以在Eric Lippert的博客中找到.


Pat*_*ton 2

我返回一个空数组 - 似乎是正确的做法。