C# 集合返回值:返回 null 还是空集合?
在编写返回集合的方法时,经常会遇到一个问题:是返回 null 还是返回空集合?在 C# 中,最佳实践建议始终返回后者。
返回 null 会带来潜在问题。依赖于该集合的代码可能会遇到空检查和异常,导致意外行为。考虑以下示例:
<code class="language-csharp">if (myInstance.CollectionProperty != null) { foreach (var item in myInstance.CollectionProperty) { /* 此处可能出现问题 */ } }</code>
为了避免这些问题,始终返回空集合。这样可以确保代码能够安全地处理集合,而不管其内容如何。
对于属性,最好只设置一次,然后保持不变。使用以下模式:
<code class="language-csharp">public List<foo> Foos { get; private set; } public Bar() { Foos = new List<foo>(); }</code>
在 .NET 4.6.1 中,可以将其简化为:
<code class="language-csharp">public List<foo> Foos { get; } = new List<foo>();</code>
对于返回可枚举类型的方法,您可以轻松地返回空可枚举类型而不是 null:
<code class="language-csharp">public IEnumerable<foo> GetMyFoos() { return InnerGetFoos() ?? Enumerable.Empty<foo>(); }</code>
使用 Enumerable.Empty<T>()
比返回显式创建的空集合或数组更有效。
以上是C# 中返回集合的方法应该返回 Null 还是空集合吗?的详细内容。更多信息请关注PHP中文网其他相关文章!