2011-10-28 51 views
5

我正在写一个小型的C#控制台应用程序。C#Console.Readkey - 等待特定输入

我想该应用等待来自关于Y或A 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 ==作为操作数不能被应用到“字符”或“字符串'

请帮忙吗?

在此先感谢。

+0

单引号,不是double ...(result.KeyChar =='Y')|| (result.KeyChar =='y') – ComeIn

回答

8

KeyCharchar"Y"string

你想要像KeyChar == 'Y'这样的东西来代替。

+0

非常感谢。我的一个小学生的错误。在PHP移动之后仍然与C#一起苦苦挣扎!再次感谢。 – tripbrock

+0

另一种方法是:'result.Key == ConsoleKey.Y' – Carol

+0

@K_Rol:这可能会起作用。我担心它不仅会接受'Y'和'Shift + Y',而且会接受'Ctrl + Y'。 – Gabe

2

检查这个代替

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(); 
     } 
    } 
0

你可能希望用户按Enter确认他们的反应,所以ReadLine是最好的。还要将字符串响应转换为大写以进行通用比较检查。像这样:

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