This is another blog post filed under “So I can remember this for next time. If it helps you too, great!”
In C#, when looping over a collection where the collection object itself might be null, if the desired behavior is to just loop zero times if the collection object is null, typical code would be:
List<MyType> list = PopulateList(); // Some method that returns a List<MyType>, or null
if (list != null)
{
foreach (MyType mt in list)
{
// Do stuff with mt...
}
}
Using the C# null-coalescing operator ??
, the above code can be condensed to:
List<MyType> list = PopulateList(); // Some method that returns a List<MyType>, or null
foreach (MyType mt in list ?? Enumerable.Empty<MyType>)
{
// Do stuff with mt...
}
In that second example, if list
is non-null, then the foreach
iterates over it as normal. If list
is null, then the foreach
iterates over an empty collection -- so zero iterations are performed.