我想知道c#中的语法糖。
var name = side=="BUY" ? "LONG" : "SHORT";
->非常简单。
但是有可能有价值,除了"购买"one_answers"出售"。以下是多余的。请告诉我简单的表达。
var name;
if (side == "BUY")
name="LONG";
else if(side="SELL")
name="SHORT";
else
throw Exception();
以下几个较短的抛出异常方法(所有情况敏感):
string name1 = side == "BUY" ? "LONG" : side == "SELL" ? "SHORT" : throw new Exception();
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.'
如果您不介意筑巢三元:
var name = side == "BUY"
? "LONG"
: side == "SELL"
? "SHORT"
: "NEITHER";
在这里工作小提琴。
如果您必须在"都不"的情况下抛出异常,但是除了 - else -else构造之外,都会更喜欢其他东西,那么开关方法可能是:
使用系统;
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);
}
}
在这里工作小提琴。
使用开关表达式:
string name = side switch
{
"BUY" => "LONG",
"SELL" => "SHORT",
_ => throw new Exception()
};