2011-10-28 20 views
5

Tengo una pequeña aplicación de consola C# que estoy escribiendo.C# Console.Readkey - esperar entrada específica

Me gustaría que la aplicación espere instrucciones del usuario sobre una pulsación de tecla Y o N (si se pulsa cualquier otra tecla la aplicación ignora esto y espera una Y o una N y luego ejecuta el código dependiendo de la y o N respuesta.

me ocurrió esta idea,

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; 
    } 
} 

por desgracia, aunque dice que su VS no le gusta la result.Keychat == como el operando no puede ser aplicado a un 'carbón' o " cadena '

¿Alguna ayuda?

Gracias de antemano.

+0

comilla simple, no doble ... (result.KeyChar == 'Y') || (result.KeyChar == 'y') – ComeIn

Respuesta

8

KeyChar es un char mientras que "Y" es un string.

En su lugar, desea algo como KeyChar == 'Y'.

+0

Muchas gracias. Un error de colegial de mi parte. Todavía luchando con C# después del movimiento php! Gracias de nuevo. – tripbrock

+0

Una alternativa sería esta: 'result.Key == ConsoleKey.Y' – Carol

+0

@K_Rol: Eso podría funcionar. Me preocuparía que aceptaría no solo 'Y' y' Shift + Y', sino también 'Ctrl + Y'. – Gabe

2

Marque esta vez

string result = Console.ReadLine(); 

Y después de la salida el resultado

2

lo que busca es algo como esto

 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

Es posible que desee el usuario para confirmar su respuesta pulsando entrar , entonces ReadLine es lo mejor. También convierta la respuesta de cadena a mayúsculas para una verificación de comparación genérica. Como tal:

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