💻

null 条件演算子(?.) と null 合体演算子(??)の複雑な組み合わせを理解する

2024/04/25に公開

C# で null 条件演算子と null 合体演算子を組み合わせた以下のような書き方が苦手だったのですが、

if (!obj?.Foo?.Bar ?? true) {
  // obj.Foo.Bar の途中に null がある、もしくは obj.Foo.Bar の結果が false なら実行。
}

これはドモルガンの法則で括弧が一度展開されている状態だと理解できたら大分読みにくくなりました。(これなら null 合体演算子がデフォルト値として振る舞ういつものパターン)

if (!(obj?.Foo?.Bar ?? false)) {
}

詳しくは以下に書きました。

https://ongaeshi.hatenablog.com/entry/understanding-null-conditional-coalescing-operators-in-csharp

Discussion