rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 6.0 - Null 条件演算子

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

Null 条件演算子

 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-conditional-operators
 メンバー アクセスおよびインデックス操作のチェーンの 1 つの演算が null を返す場合、チェーンの実行の残りの部分を停止し null を返すショートサーキット。

string s = "text";

// s が null でないので null 条件演算子を使っていなくても例外は発生しない
Console.WriteLine(s.Length.ToString()); // 4
Console.WriteLine(s.ToCharArray()[0]); // t

s = null;
try
{
    Console.WriteLine(s.Length.ToString()); // s が null なので例外発生
    Console.WriteLine(s.ToCharArray()[0]);
}
catch (NullReferenceException ex)
{
    Console.WriteLine(ex.Message);
}

// s が null なのでプロパティやメソッドは実行せず null を返す
Console.WriteLine(s?.Length.ToString() == null); // True
Console.WriteLine(s?.ToCharArray()?[0] == null);  // True