2017-03-09 13 views
0

私はC#で構文砂糖を知りたい。C#構文砂糖3つの条件で

var name = side=="BUY" ? "LONG" : "SHORT"; 

- >非常に簡単です。

しかし、 "BUY"と "SELL"以外の値がある可能性があります。 以下は冗長です。 シンプルな表現を教えてください。

var name; 
if (side == "BUY") 
    name="LONG"; 
else if(side="SELL") 
    name="SHORT"; 
else 
    throw Exception(); 
+1

'スイッチcase'?。 – zerkms

+0

switch-caseの 'name variable'に戻り値を設定する構文はありますか? – kyounoii

+0

あなたが何を意味するのか分かりません。 – zerkms

答えて

1

は、例外をスローするには、いくつかの短い方法(すべて大文字と小文字を区別)です:

string name1 = side == "BUY" ? "LONG" : side == "SELL" ? "SHORT" : side.Remove(-1); // System.ArgumentOutOfRangeException: 'StartIndex cannot be less than zero.' 

string name2 = new[] { "LONG", "SHORT" }[Array.IndexOf(new[] { "BUY", "SELL" }, side)]; // System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' 

string name3 = new Dictionary<string, string> { { "BUY", "LONG" }, { "SELL", "SHORT" } }[side]; // System.Collections.Generic.KeyNotFoundException: 'The given key was not present in the dictionary.' 
1

あなたは三元をネスト気にしない場合:

var name = side == "BUY" 
    ? "LONG" 
    : side == "SELL" 
     ? "SHORT" 
     : "NEITHER"; 

Working Fiddle here

あなたが「NEITHER」の場合に例外をスローする必要がありますが、もし以外の何か希望した場合 - 場合は、他の - 他の構築を、その後、スイッチアプローチは次のようになります。

システムを使用しました。

public class Program 
{ 
    public static void Main() 
    { 
     var side = "Foo"; // or "BUY" or "SELL" or whatever 
     var name = "NEITHER"; 
     switch (side) 
     { 
      case "BUY": 
       name = "LONG"; 
       break; 
      case "SELL": 
       name = "SHORT"; 
       break; 
      default: 
       throw new Exception(); 
     } 
     Console.WriteLine(name); 
    } 
} 

Working Fiddle here。ここで

+0

「NEITHER」の場合は、 、私は誤りを抱えたい。 – kyounoii

+1

それは "自宅でそれをしないでください" :-) – zerkms

+0

@kyounoii私はあなたのアプローチがif-else if-elseの方が最適だと思います。三項の各項は、同じ型の値を生成しなければならない。 –

関連する問題