C#在三个条件下的语法糖



我想知道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()
};

最新更新