Консоли C#.Readkey-ожидание определенного ввода

У меня есть небольшое консольное приложение c#, которое я пишу.

Я хотел бы, чтобы приложение ждало инструкции от пользователя относительно нажатия клавиши Y или N (если какая-либо другая клавиша нажата, приложение игнорирует это и ждет либо Y, либо N, а затем запускает код, зависящий от ответа Y или N.

Я придумал эту идею,

while (true)
{
    ConsoleKeyInfo result = Console.ReadKey();
    if ((result.KeyChar == "Y") || (result.KeyChar == "y"))
    {
         Console.WriteLine("I'll now do stuff.");
         break;
    }
    else if ((result.KeyChar == "N") || (result.KeyChar == "n"))
    {
        Console.WriteLine("I wont do anything");
        break;
    }
}

к сожалению, хотя VS говорит, что ему не нравится результат.Keychat == как операнд не может быть применен к' char ' или 'string'

любая помощь, пожалуйста?

спасибо заранее.

4 ответов


KeyChar Это char while "Y" это string.

вы хотите что-то вроде .


поставьте вместо

string result = Console.ReadLine();

и после проверки результата


то, что вы ищете, - это что-то вроде этого

       void PlayAgain()
    {
        Console.WriteLine("Would you like to play again? Y/N: ");
        string result = Console.ReadLine();
        if (result.Equals("y", StringComparison.OrdinalIgnoreCase) || result.Equals("yes", StringComparison.OrdinalIgnoreCase))
        {
            Start();
        }
        else
        {
            Console.WriteLine("Thank you for playing.");
            Console.ReadKey();
        }
    }

вы, вероятно, хотите, чтобы пользователь подтвердил свой ответ, нажав enter, поэтому ReadLine лучше всего. Также преобразовать строку в верхний регистр для общей проверки. Вот так:

string result = Console.ReadLine();
if (result.ToUpper().Equals("Y"))
{
    // Do what ya do ...