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

如何将含布尔判断的If语句转换为Switch语句?C#代码报错求助

解决Switch语句改写的布尔判断问题

我来帮你理清问题所在,然后给出对应的解决方案:

为什么你的代码报错?

你遇到的问题核心是:传统C# Switch语句的case后面需要跟常量值,而你写的case Note < 1 || Note > 6是一个布尔表达式(返回true或false),但你的Switch变量是int类型的Note,两者类型不兼容,所以编译器才会报出无法转换类型的错误。

两种可行的改写方案

根据你使用的C#版本,有两种简洁的写法:

方案1:使用C# 7+的模式匹配(推荐)

从C#7开始,Switch支持关系模式和逻辑模式,可以直接在case里写条件判断,完美匹配你原有的逻辑:

int Note = 0;
Console.WriteLine("What is your note?: ");
Note = Convert.ToInt32(Console.ReadLine());

switch (Note)
{
    case < 1 or > 6:
        Console.WriteLine("Your input is wrong!");
        break;
    case <= 4:
        Console.WriteLine("Passed");
        break;
    default: // 剩下的5、6两种情况
        Console.WriteLine("Failed");
        break;
}

方案2:兼容旧版C#(无模式匹配)

如果你使用的是C#7之前的版本,只能通过枚举合法的常量值,用default处理非法输入:

int Note = 0;
Console.WriteLine("What is your note?: ");
Note = Convert.ToInt32(Console.ReadLine());

switch (Note)
{
    case 1:
    case 2:
    case 3:
    case 4:
        Console.WriteLine("Passed");
        break;
    case 5:
    case 6:
        Console.WriteLine("Failed");
        break;
    default: // 匹配1以下或6以上的所有非法值
        Console.WriteLine("Your input is wrong!");
        break;
}

总结

两种方案都能实现原If语句的逻辑:先判断输入是否合法,再根据分数判断通过/失败。如果环境允许,优先用方案1,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:20:50