一尘不染

返回null或空集合更好吗?

c#

这是一个普遍的问题(但是我正在使用C#),最好的方法是什么(最佳实践),对于以集合为返回类型的方法,您是否返回null或空集合?


阅读 304

收藏
2020-05-19

共1个答案

一尘不染

空集合。总是。

这很烂:

if(myInstance.CollectionProperty != null)
{
  foreach(var item in myInstance.CollectionProperty)
    /* arrgh */
}

null在返回集合或可枚举的对象时,永远不要返回是一种最佳实践。 总是
返回一个空的可枚举/集合。它可以防止上述的废话,并防止您的汽车被班上的同事和用户所困扰。

在谈论属性时,请始终设置一次属性,然后忘记它

public List<Foo> Foos {public get; private set;}

public Bar() { Foos = new List<Foo>(); }

在.NET 4.6.1中,您可以将其压缩得很多:

public List<Foo> Foos { get; } = new List<Foo>();

当谈论返回枚举的方法时,您可以轻松地返回一个空的枚举而不是null

public IEnumerable<Foo> GetMyFoos()
{
  return InnerGetFoos() ?? Enumerable.Empty<Foo>();
}

Enumerable.Empty<T>()与返回例如新的空集合或数组相比,使用效率更高。

2020-05-19