web-dev-qa-db-ja.com

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は結果が気に入らないと言っていますが、オペランドが「char」または「string」に適用できないため、Keychat ==

何か助けてください?

前もって感謝します。

9
tripbrock

KeyCharcharであり、"Y"stringです。

代わりにKeyChar == 'Y'のようなものが必要です。

14
Gabe

代わりにこれを確認してください

string result = Console.ReadLine();

そして結果を確認した後

4
GregM

あなたが探しているのはこのようなものです

       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
Corey

おそらく、ユーザーがEnterキーを押して応答を確認する必要があるため、ReadLineが最適です。また、一般的な比較チェックのために、文字列応答を大文字に変換します。そのようです:

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