You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化C#中多匹配值返回相同结果的switch表达式?

问题原因

你使用的or多匹配模式是C# 9.0及以上版本才支持的语法特性,如果你的项目目标框架低于.NET 5,或者手动指定的C#语言版本低于9.0,就会出现编译错误。

解决方案

方案1:高版本C#直接使用or语法

如果可以调整项目配置,将目标框架升级为.NET 5+,或者在项目属性中将C#语言版本设置为9.0及以上,你写出的简化代码本身就是合法的,可直接运行:

public static void Main(string[] args)
{
    int level = 5;

    var indicator = level switch
    {
        1 => "C",
        2 or 3 or 5 or 6 => "R",
        _ => "D"
    };

    Console.ReadKey();
}

方案2:低版本C#兼容写法(适用C# 8.0,支持switch表达式的最低版本)

无法升级语言版本时,可以通过when条件从句+集合包含判断实现同等逻辑:

public static void Main(string[] args)
{
    int level = 5;

    var indicator = level switch
    {
        1 => "C",
        _ when new []{2,3,5,6}.Contains(level) => "R",
        _ => "D"
    };

    Console.ReadKey();
}

如果担心每次判断生成新数组的性能问题,可以提前把匹配值集合定义为静态只读变量。

方案3:更低版本C#兼容(无switch表达式支持)

如果使用的C#版本低于8.0,只能退回到传统switch语句实现:

public static void Main(string[] args)
{
    int level = 5;
    string indicator;
    switch (level)
    {
        case 1:
            indicator = "C";
            break;
        case 2:
        case 3:
        case 5:
        case 6:
            indicator = "R";
            break;
        default:
            indicator = "D";
            break;
    }

    Console.ReadKey();
}

内容的提问来源于stack exchange,提问作者AdvancingEnemy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:15:03