J'ai une petite application de console C # que j'écris.
Je voudrais que l'application attende des instructions de l'utilisateur concernant une pression sur la touche Y ou N (si vous appuyez sur une autre touche, l'application ignore cela et attend soit un Y, soit un N, puis le code dépend du Y ou du N réponse.
Je suis venu avec cette idée,
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;
}
}
Malheureusement, VS dit ne pas aimer le résultat. Keychat == car l'opérande ne peut pas être appliqué à un 'caractère' ou une 'chaîne'
Toute aide s'il vous plaît?
Merci d'avance.
KeyChar
est une char
alors que "Y"
est une string
.
Vous voulez quelque chose comme KeyChar == 'Y'
à la place.
Vérifiez ceci à la place
string result = Console.ReadLine();
Et après vérification du résultat
Qu'est-ce que vous cherchez est quelque chose comme ça
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();
}
}
Vous voulez probablement que l'utilisateur confirme sa réponse en appuyant sur Entrée; ReadLine est préférable. Convertissez également la réponse de chaîne en majuscules pour le contrôle de comparaison générique. Ainsi:
string result = Console.ReadLine();
if (result.ToUpper().Equals("Y"))
{
// Do what ya do ...