fox-net’s blog

システム開発に間することをざっくばらんに

C#でnullチェックを省略-Collection編

当然ですが、以下のソースは例外で落ちます。

public static void Main(string[] args)
{
    List<string> nullList = null;

    foreach (string str in nullList) // ここで落ちる
    {
        Console.WriteLine(str);
     }
}


ifでnullチェックとか、nullの場合は空リストで初期化するとか方法はありますが、
以下のような拡張メソッドを定義して、
nullチェックを省略してしまうとシンプルでよさげです。

拡張メソッド
public static IEnumerable<T> CollectionOrEmpty<T>(this IEnumerable<T> collection)
{
    return collection ?? Enumerable.Empty<T>();
}
使い方
public static void Main(string[] args)
{
    List<string> nullList = null;

    foreach (string str in nullList.CollectionOrEmpty())
    {
        Console.WriteLine(str);
    }
}