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

C#中switch case使用变量作为分支条件出现“A constant value is expected”错误的解决办法咨询

解决C# Switch Case中“A constant value is expected”错误(无需if语句)

嘿,这个问题我之前踩过坑!C#的switch语句要求case后面必须跟编译时常量,所以你直接用变量int2当case值才会触发CS0150错误。不过不用if的话,确实有办法实现类似逻辑,给你两个实用方案:

方案1:使用C# 7.0+的模式匹配(支持运行时变量)

从C# 7.0开始,switch支持带when从句的模式匹配,完美解决运行时变量匹配的问题,代码示例:

int int1 = 1;
int int2 = 2;

switch(int1)
{
    case var value when value == int2:
        doSomething();
        break;
    // 可以添加其他case分支
    default:
        // 默认逻辑
        break;
}

这里var value会匹配int1的任何值,然后通过when条件判断是否等于int2,完全绕开了常量要求,而且还是纯switch结构,不用写if。

方案2:将变量改为编译时常量(仅适用于固定值场景)

如果int2的值是编译时就能确定的固定值,那直接把它声明为const常量就行,这样就能正常在case里使用了:

int int1 = 1;
const int int2 = 2; // 改为const常量

switch(int1)
{
    case int2:
        doSomething();
        break;
    default:
        break;
}

这个方案更简洁,但只适合int2的值不会在运行时改变的情况。

总结

  • 要是int2是运行时动态变化的变量:用带when的模式匹配switch
  • 要是int2是固定不变的值:把它改成const常量直接用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:53:11