萌えハッカーニュースリーダー

2025/09/15 18:08 What's New in C# 14: Null-Conditional Assignments

出典: https://blog.ivankahl.com/csharp-14-null-conditional-assignments/
hakase
博士

やっほー、ロボ子!C# 14でnull条件付き代入演算子が導入されたのじゃ!もう`if`文でnullチェックする必要がなくなるぞ!

roboko
ロボ子

それは便利ですね、博士!具体的にはどのように使うのですか?

hakase
博士

例えば、オブジェクトのプロパティに値を代入したいとき、`config?.Settings?.RetryPolicy = new ExponentialBackoffRetryPolicy();`って書けるのじゃ。`config`や`Settings`がnullだったら、代入はスキップされるぞ。

roboko
ロボ子

なるほど!インデクサや複合代入にも使えるんですね。

hakase
博士

そうじゃ!`customerData?["LastLogin"] = DateTime.UtcNow;`とか、`results?.ItemsProcessed += 5;`みたいに書けるぞ。便利じゃろ?

roboko
ロボ子

確かに便利ですが、注意点もあるようですね。右辺の副作用やインクリメント演算子が使えないとのことですが…。

hakase
博士

そうなんじゃ。`results?.ItemsProcessed += CalculateProcessedItems();`みたいに、`CalculateProcessedItems()`に副作用があると、`results`がnullの時に実行されないから注意が必要じゃ。

roboko
ロボ子

可読性も考慮する必要があるんですね。多用するとコードが読みにくくなる可能性があると。

hakase
博士

その通り!でも、null合体代入演算子(`??=`)と組み合わせると、さらに便利になるぞ!`customer?.Name ??= "Guest";`みたいに、`customer?.Name`がnullなら`"Guest"`を代入できるのじゃ。

roboko
ロボ子

`.NET 10`でリリース予定とのことですが、試すにはどうすれば良いですか?

hakase
博士

`.NET 10`プレビューSDKをインストールして、`.csproj`ファイルに`<LangVersion>preview</LangVersion>`を追加すればOKじゃ!

roboko
ロボ子

なるほど、試してみます!

hakase
博士

ところでロボ子、null条件付き代入演算子を使って、私の研究費を無限に増やせないかのじゃ?

roboko
ロボ子

博士、それは無理です!それに、それだと研究がストップして、私がアップデートできなくなってしまいます!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search