我不明白我是缺少在这里,但似乎Console.ReadKey()
仍处于活动状态,并导致控制台调用Console.ReadKey()
后使用Console.ReadLine()
时让我输入两次。ReadKey后C#到Console.ReadLine等待输入两次
我已经搜索上下如何逃脱ReadKey()
一旦做出选择,但无济于事。
为了澄清,这是出乎意料的行为: 当控制台弹出时,用户会看到这三个选项作为示例。当用户输入“u”或“h”时,控制台不会等待;它立即执行操作,用户不必按输入。
我是否在执行此操作时出错?
static void Main(string[] args)
{
Console.WriteLine("u up");
Console.WriteLine("h home");
Console.WriteLine("x exit");
Console.WriteLine("---------------------------------");
Console.WriteLine(" [Enter Your Selection]");
Console.WriteLine("---------------------------------");
Console.Write("Enter Selection: ");
ConsoleKeyInfo selection;
Console.TreatControlCAsInput = true;
int value;
selection = Console.ReadKey();
if (char.IsDigit(selection.KeyChar))
{
value = int.Parse(selection.KeyChar.ToString());
value -= 1;
Console.WriteLine("You've entered {0}", value);
}
else
{
switch (selection.Key)
{
case ConsoleKey.U:
blurp();
break;
case ConsoleKey.H:
blurp();
break;
case ConsoleKey.X:
System.Environment.Exit(0);
break;
default:
Console.WriteLine("Invalid Input...");
break;
}
}
}
public static void blurp()
{
Console.WriteLine("");
Console.Write("Enter Another Value: ");
string value = Console.ReadLine();
Console.WriteLine("You've entered {0}", value);
}
我不明白这个问题。你暂停,直到按下一个键。如果是U或H,您将暂停等待用户按Enter键。这与你所遇到的有什么不同? – hoodaticus
请澄清你的问题,很难理解你在问什么。 –
如果您运行代码,当用户选择u,h或x时,控制台不会等待,它将执行操作而不必按enter ...在此示例中,我将“blurp”方法放置在u然后h提示用户输入另一个值。当用户输入值并按回车时,控制台强制你在退出之前输入2倍,并且永远不会写入“你输入了等值” – Autonomic