Null条件演算子 (英: null-conditional operator) とは、第一項がnull(ヌルポインタ: null pointerまたはヌル参照: null reference)でない場合に第二項の結果を返し、nullである場合にnullを返す演算子である。nullでないことのチェック処理の記述を回避し、安全にメソッドチェーンやプロパティチェーンを行うために用いられる。メンバーアクセス演算子.は第一項がnullの場合に実行時エラー(例えばJavaの場合NullPointerException)が発生するが、Null条件演算子の場合はnullの検出が自動化され、以降のメソッド呼び出しやフィールド/プロパティの評価を行わずにnullをその結果として返す。Null条件演算子はGroovy、Swift、Ruby、C#、VB.NET、Kotlin、CoffeeScriptなどで実装されている。Null条件演算子は言語によってsafe navigation operator、optional chaining operator、safe call operator、null-conditional operatorなど様々な名称で呼ばれ、共通した名称はないが、英語圏においてはsafe navigation operatorが広く用いられる。
Null条件演算子を使用する主な利点は、nullチェック時に過剰にネストが深くなる問題 (pyramid of doom) を回避できることである。
例
特に断りがない限り、コード例における各シンボルは以下の条件であるとする。
articles変数:Articleクラス型の配列Articleクラス:Personクラス型のプロパティまたはフィールドとしてAuthororauthorを持つPersonクラス: 文字列型のプロパティまたはフィールドとしてNameornameを持つ
C#
C#は6.0以降でnull条件演算子?.、?[]をサポートする。
VB.NET
VB.NETは14以降でnull条件演算子?.、?()をサポートする。
Groovy
safe navigation operator:
Objective-C
多くの場合で通常の.演算子をnullを考慮しないで表記することができる。
Swift
optional chaining operator:
optional subscript operator:
Ruby
Rubyは2.3.0よりsafe navigation operatorをサポートし、&.と表記する。ぼっち演算子 (lonely operator)という名称も与えられている。
Kotlin
safe call operator:
Perl 6
safe method call:
JavaScript
ECMAScript 2020以降でオプショナルチェイニング(Optional chaining)演算子をサポートする。
脚注
関連項目
- 条件演算子:
? : - Null合体演算子:
??など - エルビス演算子:
?:


![Cで[CS8602null 参照の可能性があるものの逆参照です]と警告が出る場合の対処法 マゴトログ シュミニイキル](https://blog.janjan.net/wp/wp-content/uploads/2022/11/c-sharp-dereference-of-a-possibly-null-reference-cs8602-03.jpg)

