「Unityで書く C# if文省略形シリーズ」、全3回の第二弾です。
今回のテーマは null とその周辺にある便利な省略形。
C#ではnullのチェックや代入処理が多くなりがちですが、それをスッキリ書ける演算子がいくつか用意されています。
null合体演算子で書く
まずは「nullならこっちを使って」という処理に使える ?? 演算子です。
🗂️ 普通バージョン
string name;
if (inputName != null)
{
    name = inputName;
}
else
{
    name = "Unknown";
}よくある「nullならデフォルト値」のパターンです。
悪くないですが、ちょっと長いですね。
✂️ null合体演算子バージョン
string name = inputName ?? "Unknown";非常にシンプルです。inputName が null なら "Unknown" を使う、という意味です。
読みやすく、意図も明確になります。
null合体割り当て演算子で書く
続いては「もし値がnullなら代入してね」という場面で便利な ??= です。
🗂️ 普通バージョン
if (list == null)
{
    list = new List<string>();
}nullチェックしてからの初期化。これもよく見ますね。
✂️ null合体割り当て演算子バージョン
list ??= new List<string>();たった1行で同じ処理が可能になります。
nullの場合だけ代入されるため、既に値があればそのまま使われます。
初期化の簡略化に便利です。
null条件演算子で書く
最後は「nullだったら何もしないでね」というときに使える ?. です。
🗂️ 普通バージョン
if (player != null)
{
    player.Play();
}ありがちなnullチェック。コードの中で繰り返されがちです。
✂️ null条件演算子バージョン
player?.Play();player が null でなければ Play() が呼ばれ、null ならスルーされます。
安全かつ短く書けるので、null対策として非常に実用的です。
これは必修です。必修。
まとめ
| 処理内容 | 普通の書き方 | 省略形 | 
|---|---|---|
| nullなら代替値 | if (...) { ... } else { ... } | ?? | 
| nullなら代入 | if (x == null) x = ...; | ??= | 
| nullならスキップ | if (x != null) x.Method(); | x?.Method(); | 
次回予告:条件式に潜む悪魔、||=と&&=?
次回は、さらに省略できる条件演算子たちに踏み込むかもしれません。||= や &&= といった、ややニッチだけど知っておくと便利な書き方も紹介する予定です。
それでは、スッキリしたnull処理で、安全なコードライフを。
このエントリーは旧ブログで公開していた同テーマのエントリーを加筆修正したものです。
 
  
  
  
  

