(.Net)三項演算子
C言語やって時から三項演算子自体は知ってましたが、当時可読性が悪くなると言われてたんでほとんど使ってませんでした。
しかし、三項演算子使ったほうがシンプルに読みやすい場合もあることを再発見しました。
例えば普通に if 文で書くとこうなります。
//usr は User クラスのインスタンス
List
listUserName = new List (); List
listCompanyName = new List (); ...
if (String.IsNullOrEmpty(usr.UserName))
{
listUserName.Add(string.Empty);
}else{
listUserName.Add(usr.UserName);
}
if (String.IsNullOrEmpty(usr.CompanyName))
{
listCompanyName.Add(string.Empty);
}else{
listCompanyName.Add(usr.CompanyName);
}
...
これを三項演算子を使うと↓のようになります。
//usr は User クラスのインスタンス
List
listUserName = new List (); List
listCompanyName = new List (); ...
listUserName.Add(String.IsNullOrEmpty(usr.UserName) ? string.Empty : usr.UserName);
listCompanyName.Add(String.IsNullOrEmpty(usr.CompanyName) ? string.Empty : usr.CompanyName);
...
if文の定型処理の繰り返しだとかなり長くなってしまいますが、三項演算子を使うと1行もしくは2行で済むためシンプルにまとまりますね。
追記:(2010/3/10)
PG仲間からの情報ですが、
string str = a ?? b
ってするとaがnullじゃないときにaがstrに入ってnllだったらbが入るようです。
知らなかったんですが、結構使えるかもしれませんね。