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

C#中如何用switch语句处理用户输入?新手技术求助

问题修复方案

你的代码存在两个关键错误,直接导致编译失败:

1. 类型不匹配错误(CS0029)

Console.ReadKey()返回的是ConsoleKeyInfo类型对象,但你在switch语句中用ConsoleKey枚举值作为case判断条件,两者类型不兼容。

解决方法:读取输入时获取.Key属性,这样得到的就是ConsoleKey枚举类型,和case的类型一致:

var jCellIntyuio = Console.ReadKey().Key;

2. Case分支贯穿错误(CS0163)

每个case分支执行完毕后没有添加break;语句,导致代码会从当前case直接“贯穿”到下一个case中执行,这是C#不允许的(除非你故意用goto case或return)。另外你的代码里还重复定义了case ConsoleKey.U:,这也是语法错误,同一个switch中不能有重复的case值。

修复后的完整代码

var jCellIntyuio = Console.ReadKey().Key;
switch(jCellIntyuio)
{
    case ConsoleKey.Y:
        jcToilet.ObjInfo(); // 显示马桶信息
        break;
    case ConsoleKey.U:
        WashBasin.ObjInfo(); // 显示洗手池信息
        break;
    case ConsoleKey.I:
        BunkBed.ObjInfo(); // 显示 bunk bed 信息
        break;
    case ConsoleKey.O: // 替换重复的U键,你可根据需求调整为其他按键
        JailWalls.ObjInfo(); // 显示监狱墙信息
        break;
    default:
        Console.WriteLine("无效输入,请按指定按键操作");
        break;
}

额外说明

  • 如果你希望某个case执行后继续执行下一个case,可以使用goto case "目标case值";,但这种场景很少见,大部分情况用break;终止分支即可。
  • default分支用于处理所有未匹配到的输入,提升程序的健壮性。

内容的提问来源于stack exchange,提问作者I am groot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:39:51