Is it better to return null or empty collection?

前端 未结 18 1633
我在风中等你
我在风中等你 2020-11-22 07:56

That\'s kind of a general question (but I\'m using C#), what\'s the best way (best practice), do you return null or empty collection for a method that has a collection as a

18条回答
  •  盖世英雄少女心
    2020-11-22 08:39

    Empty collection. Always.

    This sucks:

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

    It is considered a best practice to NEVER return null when returning a collection or enumerable. ALWAYS return an empty enumerable/collection. It prevents the aforementioned nonsense, and prevents your car getting egged by co-workers and users of your classes.

    When talking about properties, always set your property once and forget it

    public List Foos {public get; private set;}
    
    public Bar() { Foos = new List(); }
    

    In .NET 4.6.1, you can condense this quite a lot:

    public List Foos { get; } = new List();
    

    When talking about methods that return enumerables, you can easily return an empty enumerable instead of null...

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

    Using Enumerable.Empty() can be seen as more efficient than returning, for example, a new empty collection or array.

提交回复
热议问题