C# の Null 条件演算子
C# の Null 条件演算子で解決する問題
C# でオブジェクトのメソッドを呼び出す場合に、もしオブジェクトが null である場合には NullReferenceException が発生してしまいます。
例えば、string オブジェクトの ToUpper() メソッドを呼ぶ場合には、 次のように書きます。
s = s.ToUpper()
もし、ここで変数 s の値が null であると NullReferenceException が発生します。
こうした問題を回避するためには通常、変数が null では無いことを確認してからメソッドを呼び出します。
if (s != null)
{
s = s.ToUpper();
}
C# の Null 条件演算子の利用
C# の Null 条件演算子 ?. を使うと、上記のような null チェックが不要になります。
上と同等のコードは次のようになります。
s = s?.ToUpper();
つまり Null 条件演算子 (null conditional operator) ?. を使ってメソッドを呼び出すとオブジェクトが null であるかチェックし、 もし null である場合には何もしません。
他のプログラミング言語で「オプショナルチェーン」などと呼ばれる場合もあります。
MS の資料では「エルビス演算子」とも呼ばれる
MS の資料では Null 条件演算子 .? のことを、エルビス演算子 (Elvis operator) とも呼んでいます。
一般的には「エルビス演算子」というと、 ?: という形を指す場合が多いです。 これは、有名なエルビス・プレスリーのリーゼントに由来します。
他の言語では null 合体演算子の ?: が「エルビス演算子」と呼ばれる場合が多いです。
一般的な言い方と異なり MS の資料では、 Null 条件演算子 .? をエルビス演算子と呼ぶ点には注意が必要です。