Skip to content

Instantly share code, notes, and snippets.

@ferventcoder
Created August 2, 2011 16:50
Show Gist options
  • Save ferventcoder/1120638 to your computer and use it in GitHub Desktop.
Save ferventcoder/1120638 to your computer and use it in GitHub Desktop.
IEnumerable Null Safeguard Extension - Useful When Iterating (ForEach Loop)
foreach (var item in items ?? new List<string>())
{
//do something
}
public static class EnumerableExtensions
{
public static IEnumerable<T> OrEmptyListIfNull<T>(this IEnumerable<T> source)
{
return source ?? Enumerable.Empty<T>();
}
}
foreach(var item in items.OrEmptyListIfNull())
{
//do something
}
@jglozano
Copy link

jglozano commented Aug 2, 2011

I typically do all this as an assignment outside the looping construct - extensions are nice but they can be confusing.

items = items ?? new List();

or

var list = items ?? new List();

is cleaner IMO

@ferventcoder
Copy link
Author

@jglozano: I started down that path and thought, I could shortcut this at the point of the loop...

@ferventcoder
Copy link
Author

Late entry by @damianh (randompunter on twitter) - https://gist.github.com/1120821

http://twitter.com/randompunter/status/98457825998684160

"@ferventcoder in a similar vein https://gist.github.com/1120821"

Good stuff. The name of the extension is a little more clear.

@ferventcoder
Copy link
Author

I settled on the extension method named OrEmptyListIfNull. This directly borrows from @cammerman's https://gist.github.com/1120655 ;)

as in

foreach(var item in items.OrEmptyListIfNull()) 
{
  //do something
}

I posted the code back at the top of this gist.

@ferventcoder
Copy link
Author

This feels like community design... :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment