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 条件演算子 .? をエルビス演算子と呼ぶ点には注意が必要です。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門