OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

C# 三項演算子をswitch文の代わりとして使用する

小ネタ。
三項演算子(条件演算子?)は可視性がいまいちだとかで嫌われてる気がするけど
うまく使えば簡単なswitch文の代わりにだってなるし、むしろ見やすいと思うよ!
という話。

まず、一般的によく使われるのは、↓こんなif文の代替にするケースか。

//int num;  
string text;  
if (num == 1)   
{  
    text = "いち";  
}   
else   
{  
    text = "いちじゃない";  
}  

これを以下のように三項演算子に置き換えるとすっきり書ける。
ここまではまあ特に文句もないでしょう。

//int num;  
var text = num == 1 ? "いち" : "いちじゃない";  

そして問題は、1か1じゃないかだけでなくて、
1か、2か、3か、それ以外かで分岐したいような場合。
if - else if - else if...ってやってくのもあれだから、
switch文にしましょうってなことをやったりすると思う。
もちろん、いったんDictionary的なので対応付けを作って~とかでもいいのだけど。

//int num;  
string text;  
switch (num)  
{  
    case 1:  
        text = "いち";  
        break;  
    case 2:  
        text = "に";  
        break;  
    case 3:   
        text = "さん";  
        break;  
    default:  
        text = "その他";  
        break;  
}  

こういうときに、三項演算子を使うと意外とすっきり書けてしまうのですよ。
ほれ。

//int num;  
var text = num == 1 ? "いち"  
         : num == 2 ? "に"  
         : num == 3 ? "さん"  
         : "その他";  

なんとなく三項演算子って横着な人がだらだら横に長く書くイメージがあるけど
実は縦に並べると見やすくなるのよな。

C#にかぎらず、いろんな言語で使える方法だし、
とうの昔から使っている人は使っているんだろうとは思いますが。