如果没有按下consoleKey.Escape,如何返回字符串值?

时间:2013-10-11 17:32:59

标签: c# return console-application

我有一个基本的控制台应用程序。用户可以从编号的菜单1-5中进行选择。如果他们按ESC,程序将关闭,但如果他们没有按ESC,switch用于确定他们选择了哪个选项(1,2,3,4或5)。

此代码无效:

static string mainMenu()
        {
    string menuOption;

        // get user input
        ConsoleKeyInfo option = Console.ReadKey();
        if (option.Key == ConsoleKey.Escape)
        {

           Environment.Exit(0);
        }

        return menuOption = Console.ReadLine();
}

如何获取用户输入menuOption的字符串值,同时还检查用户是否按下了ESC

2 个答案:

答案 0 :(得分:3)

您可以使用menuOption = option.KeyChar.ToString();

答案 1 :(得分:1)

如果您的选项只是单个字符,那么如果您返回一个字符而不是字符串然后在字符上使用switch语句则会更好。你的方法可以是:

static char mainMenu()
{
    ConsoleKeyInfo option = Console.ReadKey();
    if (option.Key == ConsoleKey.Escape)
    {
        Environment.Exit(0);
    }

    return option.KeyChar;
}

然后你可以在switch语句中使用它,如:

char option = mainMenu();
switch (option)
{
    case '1':
        //...........
}

或者直接在switch语句中使用该方法,如:

 switch (mainMenu())