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

如何省略Switch语句When表达式中冗余的变量声明?

解决方案:用弃元消除冗余变量

你可以直接使用C#的**弃元符号(_)**来替代那些没用的变量名,弃元的作用就是标记不需要使用的匹配变量,而且不需要每次更换不同的名称,所有case都可以复用同一个_,完美解决你的问题。

第一种写法(推荐,类型明确)

这种写法明确限定了匹配string类型,逻辑更严谨:

string i = "a1";
switch (i)
{
    case string _ when _.Contains("a", StringComparison.OrdinalIgnoreCase):
    case string _ when _.Contains("b", StringComparison.OrdinalIgnoreCase):
    case string _ when _.Contains("c", StringComparison.OrdinalIgnoreCase):
    case string _ when _.Contains("d", StringComparison.OrdinalIgnoreCase):
        {
            //some logic
            break;
        }
    case string _ when _.Contains("e", StringComparison.Ordinal):
        {
            //some logic     
            break;
        }                               
}

第二种写法(简化,适合固定类型场景)

如果你的switch变量确定是string类型,还可以进一步简化,省略string声明:

string i = "a1";
switch (i)
{
    case _ when _.Contains("a", StringComparison.OrdinalIgnoreCase):
    case _ when _.Contains("b", StringComparison.OrdinalIgnoreCase):
    case _ when _.Contains("c", StringComparison.OrdinalIgnoreCase):
    case _ when _.Contains("d", StringComparison.OrdinalIgnoreCase):
        {
            //some logic
            break;
        }
    case _ when _.Contains("e", StringComparison.Ordinal):
        {
            //some logic     
            break;
        }                               
}

可选优化:合并多条件

如果你的逻辑允许,还可以把多个contains条件合并成一个case,进一步简化代码:

string i = "a1";
switch (i)
{
    case string _ when _.Contains("a", StringComparison.OrdinalIgnoreCase) 
                     || _.Contains("b", StringComparison.OrdinalIgnoreCase)
                     || _.Contains("c", StringComparison.OrdinalIgnoreCase)
                     || _.Contains("d", StringComparison.OrdinalIgnoreCase):
        {
            //some logic
            break;
        }
    case string _ when _.Contains("e", StringComparison.Ordinal):
        {
            //some logic     
            break;
        }                               
}

这种写法适合不需要单独调整单个条件的场景,代码更紧凑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:40:38