有没有办法使用switch语句进行用户输入? C#

问题描述 投票:0回答:1

我是初学者,所以如果这是一个愚蠢的问题,我深表歉意。我只是想减少 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();
            }
c# if-statement switch-statement
1个回答
0
投票

您应该在开关中写入“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;
        }
© www.soinside.com 2019 - 2024. All rights reserved.