【问题标题】:C# switch case one line with fallthrough [duplicate]C# switch case 一行与fallthrough [重复]
【发布时间】:2021-09-15 17:20:12
【问题描述】:

最近从 C# 8.0 开始,他们引入了一个新的 switch case,它正在迅速替换我们代码库中嵌套的三元 if 语句:

var number = 1;
var evenness = number switch 
{ 
    1 => "odd", 
    2 => "even", 
    3 => "odd", 
    4 => "even",
    _=>"out of range" 
};

我非常喜欢它!真的很不错,干净简洁。

但是,可以使用此问题中的以下旧式 switch 语句来改善这一点 Multiple cases in switch statement

string eventness2;
switch (number)
{
    case 1: case 3:
        eventness2 = "odd";
        break;
    case 2: case 4:
        eventness2 = "event";
        break;
    default:
        eventness2 = "out of range";
        break;
}

我的问题是,有没有办法在类似于这种无效语法的单行 switch 语句中支持多种情况

var evenness = number switch { 1,3 => "odd", 2,4 => "even",_=>"out of range";

【问题讨论】:

    标签: c# switch-statement


    【解决方案1】:

    当然,使用模式匹配:

    var evenness = number switch { 1 or 3 => "odd", 2 or 4 => "even", _ => "out of range" };
    

    【讨论】:

    • 谢谢!这太棒了!
    • 另外,堆栈溢出错误地将我的问题标记为与我在正文中引用的问题相同。多么愚蠢
    • @apinostomberry 同意这没有帮助;用户必须这样做。我想如果你在那里评论要求三元版本,你会被提示问你自己的问题。
    • 感谢您的洞察力。 SO是一个仙境
    猜你喜欢
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多