C# 14 (.NET 10 世代の C# ) の機能、Null 条件付き割り当て / null-conditional-assignment を見てみます。
■ これまでは
変数が null の場合に、メンバーを呼び出すと例外となることを回避するための Null 条件演算子はありました。しかし、プロパティやフィールドへの値の設定で null の例外を避けられる機能はありませんでした。
// 例えばこのように書く必要があった if (c != null) c.P = "saitama";
■ これからは
プロパティやフィールドへの値の設定で使える Null 条件な機能が使えます。
// このように c?.P = "saitama";
■ コードで例
C c = new() { P = "saitama" }; Console.WriteLine(c.P); // saitama /// // これは以前からできた Null 条件演算子 /// // c?.P と書くと、c が null でも例外にならない (null が返る) c = null; try { Console.WriteLine(c.P); } catch (NullReferenceException) { Console.WriteLine("NullReferenceException caught!"); } // NullReferenceException caught! Console.WriteLine(c?.P); // null // これは例外になる try { c.P = "saitama"; } catch (NullReferenceException) { Console.WriteLine("NullReferenceException caught!"); } // NullReferenceException caught! /// // そこで、これができるようになった null 条件付き割り当て /// c?.P = "saitama"; Console.WriteLine(c?.P); // null // null でなければ普通に値が設定される c = new(); c?.P = "saitama"; Console.WriteLine(c?.P); // saitama // Preview バージョンを指定していない場合のエラー // 機能 'null conditional assignment' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。 // class C { public string? P { get; set; } }
■ 今回のコード
GitHub に上げています。
■ 備えよう
新機能、いいですね。リリースに備えましょう。