転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

条件演算子、null合体演算子まとめ

よく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合体演算子、完璧に理解した。