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