ひっそりと生きるプログラマのブログ

日頃気になった事なりを書き留めるブログです。関心ごとは多くもう少し更新頻度を上げたいところです。

Null 条件演算子

かなり出遅れた感がありますが、
最近、やっとこ自宅で C#6.0を触り始めました。

その中で、面白いなと感じたのが「Null 条件演算子
C# - The New and Improved C# 6.0

これを使う事で、「null か否か評価して、null以外の場合はあるメソッドを呼んで、nullの場合は null を返す。」
みたいな処理をする場合に一発で書けるのは面白い。

例えば、↓のような感じのコード

if (null == value)
{
    return null;
}
else
{
    return value.ToUpper();
}

これが、↓のようになります。

return value?.ToUpper();

なかなか、素敵なものだと思います。。。

この式は、 value 値が null の場合は、そのまま null を返却し、
not null の場合は、後続の処理を呼び出してゆくと。

また、三項演算子との組み合わせで、
↓のように書くことも可能となります。

// GetItems は List<T> を返す。
return GetItems()?.Count ?? 0;

いいですね。オブジェクトが存在しない場合でも 0 が返ってくるようなイメージです。


ついでですが、インデクサでもかけちゃいます。

List<int> a = null;
a?.Add(0);
var b = a?[0];

このコード。毒にも薬にもならんコードですが、
前述したとおり、実行時例外は発生しません。


ますます、実装時のパフォーマンスが上がることは請け合いです。
と、自社で使っているコーディング規約にも、この旨を追記する必要がありそうです。(使う使わないは別として)