【C#】Null条件演算子について【.NET】

C#機能バージョン対応表作成しました。
こちらの記事も合わせてご覧ください。
※今回のサンプルコードには匿名型とNull許容型が使われています。
気になる方はそれぞれの機能説明ページに飛んでください
- 匿名型
- Null許容型
サンプルコード1
1 2 3 4 5 6 |
private int? Sample1() // null許容型 { var MonsterStatus = new { Name = "スライム", Hp = 5 }; // 匿名型 return MonsterStatus.Name.Length; } |
上記サンプルコードは、MonsterStatus.Nameの文字数を取得する処理です。
しかし、このサンプルコードではMonsterStatus がnull の場合やMonsterStatus.Name が nullの場合にエラーが発生します。
次に、エラーが発生しないように修正したコードを記載します。
サンプルコード2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
private int? Sample2() // null許容型 { var MonsterStatus = new { Name = "スライム", Hp = 5 }; // 匿名型 if (MonsterStatus != null) { if (MonsterStatus.Name != null) { return MonsterStatus.Name.Length; } else { return null; } } else { return null; } } |
上記サンプルコードでは、MonsterStatus が null の場合と MonsterStatus.Name が null の場合は nullを返し、
nullでない場合は MonsterStatus.Name の文字数を取得するようにしています。
しかし、サンプルコード2はサンプルコード1に比べて長くなりました。。。
このサンプルコード2を Null条件演算子 を利用して修正します。
サンプルコード3
1 2 3 4 5 6 |
private int? Sample3() // null許容型 { var MonsterStatus = new { Name = "スライム", Hp = 5 }; // 匿名型 return MonsterStatus?.Name?.Length; } |
めっちゃサンプルコードが短くなった!?
ポイントは何度も出てきている【?】で、この【?】のことをNull条件演算子と言います。
意味は、【●●が null でなければ〜、●●が nullの場合はnullを返す】です。
今回の場合を処理順に説明すると以下になります。
①【MonsterStatus?.Name】 ⇨ 【MonsterStatusが null でなければNameを取得し、MonsterStatusが nullの場合はnullを返す】
②【Name?.Length】 ⇨ 【Nameが null でなければ文字数を取得し、Nameが nullの場合はnullを返す】
これはかなり便利になりますね!
以下、関連機能の紹介です!