3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.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が入るようです。

知らなかったんですが、結構使えるかもしれませんね。