返回 null 还是空集合:最佳实践
在设计返回集合作为返回值类型的方法时,会产生一个问题:应该返回 null 还是空集合?最佳实践强烈建议在所有情况下都返回空集合。
为什么选择空集合?
返回 null 是一种不好的实践,因为它会导致不必要的代码复杂性和潜在的运行时错误。例如,如果您为集合属性返回 null:
<code class="language-c#">if(myInstance.CollectionProperty != null) { foreach(var item in myInstance.CollectionProperty) /* 如果 CollectionProperty 为 null,此代码可能会失败 */ }</code>
如果 myInstance.CollectionProperty 确实为 null,此代码可能会导致异常。相反,最好返回一个空集合,确保上述代码仍然可以无错误地执行。
属性最佳实践
对于返回集合的属性,建议仅初始化一次该属性。这可以在包含该属性的类的构造函数期间完成:
<code class="language-c#">public List<foo> Foos { public get; private set; } public Bar() { Foos = new List<foo>(); }</code>
使用 C# 6,可以使用更简洁的版本:
<code class="language-c#">public List<foo> Foos { get; } = new List<foo>();</code>
方法最佳实践
对于返回集合的方法,如果实际集合不存在,则返回空集合。您可以为此目的使用 Enumerable.Empty
<code class="language-c#">public IEnumerable<foo> GetMyFoos() { return InnerGetFoos() ?? Enumerable.Empty<foo>(); }</code>
这种方法确保即使 InnerGetFoos() 返回 null,该方法仍然会返回一个空集合,从而防止潜在的错误。
以上是方法应该返回空收集还是空收集?的详细内容。更多信息请关注PHP中文网其他相关文章!