提问人:I am groot 提问时间:10/8/2023 最后编辑:I am groot 更新时间:10/8/2023 访问量:73
有没有办法将 switch 语句用于用户输入?C# [已关闭]
Is there any way to use switch statements for user input? C# [closed]
问:
我是初学者,所以如果这是一个愚蠢的问题,我深表歉意。我只想减少 if、else if 和 else 语句的数量,并使其使用 switch 语句或其他语句。我尝试使用 switch 语句,但似乎它们不能使用 ConsoleKey 变量。
我基本上想要这样的东西
var userIn = Console.ReadKey().Key;
switch (userIn)
{
case ConsoleKey.X: //If user input is X
//Do smthn
break;
case ConsoleKey.Z:
//Do smthn
break;
default:
//Smthn
break;
}
再说一次,我仍然是一个初学者,所以是的
首先,我尝试编写 case :,但没有奏效。 然后我尝试将 ConsoleKey.Y 和其他输入存储在变量中,然后编写大小写,但这不起作用。
它显示了这些错误,
控制不能从一个案例标签 ('case ConsoleKey.Y:') 传递到另一个案例CS0163 无法隐式将类型“System.ConsoleKey”转换为“System.ConsoleKeyInfo”CS0029
这是我尝试过的: 该代码基本上是与牢房中的物体进行交互。
var jCellIntyuio = Console.ReadKey();
switch(jCellIntyuio)
{
case ConsoleKey.Y:
jcToilet.ObjInfo(); //Method which gives info on object
case ConsoleKey.U:
WashBasin.ObjInfo();
case ConsoleKey.I:
BunkBed.ObjInfo(); //Method which gives info on object
case ConsoleKey.U:
JailWalls.ObjInfo();
}
答:
0赞
Recep
10/8/2023
#1
您应该将“jCellIntyuio.Key”写入开关,还应该添加中断和默认参数。代码应该是这样的;
switch (jCellIntyuio.Key)
{
case ConsoleKey.Y:
jcToilet.ObjInfo(); break; //Method which gives info on object
case ConsoleKey.U:
WashBasin.ObjInfo(); break;
case ConsoleKey.I:
BunkBed.ObjInfo(); break;//Method which gives info on object
case ConsoleKey.U:
JailWalls.ObjInfo(); break;
default: break;
}
评论
0赞
I am groot
10/8/2023
非常感谢,这解决了问题!
0赞
Recep
10/11/2023
你能批准这个答案吗?
评论
ConsoleKeyInfo
是一个结构,包含有关按下键的一些信息。不仅是键本身,还有它的 char 和使用的修饰符(如 Ctrl 或 Alt)。因此,如果您切换外壳 - 您必须Key
var jCellIntyuio
Console.ReadKey().Key
break;