Saturday 1 June 2019

c# - Is it better to return null or empty collection?



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 return type ?


Answer



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.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...