よくif文使いがちだが、if文は簡単だし、分かりやすい反面、たしかに行数は多くなる。
var list = new List<int> { 1, 2, 3, 4, 5, }; var key = 2; int num; if (list.Contains(key)) { num = 1; else num = 2;
リストに2が含まれていたら変数numに1を、リストに2が含まれていなければ変数numに2を代入するコードを書くだけで、7行も必要になる。
けど、条件演算子を支えばもっと楽に書けるよというものである。
var nums = new List<int> { 1, 2, 3, 4, 5 }; var key = 2; var num = nums.Contains(key) ? 1 : 2;
条件演算子を使えば、3行で書けた。けど、慣れないとこの条件演算子の書式がかなりややこしい。。上の式でいうと、trueなら1、falseなら2を返している。
続いて、null合体演算子だ。
ヌルポを防ぐコードだと、一般的にはこう書くと思う。
var message = GetMessage(); if (message == null) message = "Default";
そう、if文で変数messageがnullかどうか、チェックしている。これも、null合体演算子を使えば楽に書ける。
var message = GetMessage() ?? "Default";
上のコードだと、GetMessage()がnullなら、??以降に書かれた戻り値を変数messageに代入する。
nullかどうか判断するコードで、null条件演算子というのもある。
これは、プロパティを持つオブジェクトのnullチェックで効力を発揮する。
return sale?.Product;
sale変数がnullの場合はnullを戻り値として返すが、sale変数がnullではない場合、sale.Productプロパティを返すというもの。
どれも、たしかに簡単に書けるけど、いざ書こうとすると多分if文で書いちゃうんだろうな。。条件演算子とnull合体演算子、完璧に理解した。