C # Console.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 кажа, што яго аленевая скура як result.Keychat == як аперанд не магу прымяніць да «паўкокс» або «радок»

Любая дапамога, калі ласка?

Загадзя дзякую.

6
апостраф, а не ў два разы ... (result.KeyChar == 'Y') || (Result.KeyChar == 'у')
дададзена аўтар ComeIn, крыніца

4 адказы

KeyChar is a char while "Y" is a string.

Вы хочаце нешта накшталт KeyChar == 'Y' замест гэтага.

10
дададзена
@K_Rol: Гэта можа спрацаваць. Я занепакоены тым, што яна будзе прымаць не толькі Y і Shift + Y , але і Ctrl + Y .
дададзена аўтар Gabe, крыніца
Альтэрнатывай было б так: result.Key == ConsoleKey.Y
дададзена аўтар Carol, крыніца
Вы маеце рацыю, я проста правяраў, і ён робіць прыняць Shift + Y (або любую камбінацыю).
дададзена аўтар Carol, крыніца
Вялікае вам дзякуй. Памылка школьніка з майго боку. Тым не менш змагаецца з C# пасля PHP рухацца! Дзякуй зноў.
дададзена аўтар tripbrock, крыніца

Праверце гэта замест

string result = Console.ReadLine();

І пасля таго, як праверыць вынік

2
дададзена

Што ваш шукае нешта накшталт гэтага

       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();
        }
    }
2
дададзена

Вы, верагодна, хочаце, каб карыстальнік, каб пацвердзіць свой адказ, націснуўшы ўвесці, так ReadLine лепш. Таксама пераўтварыць радок адказу ў верхні рэгістр для агульнага параўнання праверкі. Як так:

string result = Console.ReadLine();
if (result.ToUpper().Equals("Y"))
{
   //Do what ya do ...
0
дададзена