- 開発技術
C#でのnull条件演算子について
- C#
はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
ここでは、C#の構文の一つであるnull条件演算子について紹介します。
null条件演算子は(?)を用いるもので、クラスのメンバーへのアクセス・配列の要素へのアクセス・メソッドの呼び出しなどの際に用いられます。例えば、オブジェクトのメソッドを呼び出す際に、オブジェクトがnullであった場合に、NullReferenceException が発生してまうのを防いでくれるのでnullが入る可能性のある変数を扱う際には便利です。
null条件演算子の構文
null条件演算子は、
クラス?.メンバー
のように、クラスや配列の後ろに?を付けることで使用します。
クラスのオブジェクトがnullであった場合にはそのままnullが入り、nullでない場合にはメンバーにアクセスします。
条件演算子での書き方
1 |
var name = class?.member; |
条件演算子を使わない書き方
1 2 3 4 5 6 |
var name = ""; if (class == null){ name = null; } else { name = class.member; } |
サンプルコード
1 2 3 4 |
Class class = null; var name = class?.member; Console.WriteLine(name); // 実行結果:null |
null合体演算子
null条件演算子とよく似た、null合体演算子というものもあるので合わせて紹介します。
null条件演算子は(??)を用いるもので、(??)の左辺がnullでなければ左辺を返し、nullであれば右辺を返します。
1 |
var a = b ?? c; |
変数bの値を評価して、nullでなければbをaに代入します。nullであればcをaに代入します。
合体演算子を用いない書き方
1 2 3 4 5 6 |
var a = null; if (b != null){ a = b; } else { a = c; } |
サンプルコード
1 2 3 4 |
int? a = null; int b = a ?? 0; Console.WriteLine(b); // 実行結果 : 0 |
組み合わせ使用例
勿論この二つを組み合わせて使用することもできます。
サンプルコード
1 2 3 4 |
Class class = null; var name = class?.member ?? 0; Console.WriteLine(name); // 実行結果:0 |
classがnullの場合、null条件演算子によってclass?.memberはnullになるのでclass?.member ?? 0 の右辺の0がnameの値として返ることになります。
終わりに
いかがだったでしょうか。今回紹介させて頂いた二つの演算子は非常に便利なので、ぜひ活用してみてください。
それでは、最後までご覧いただきありがとうございました。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>