【发布时间】:2017-02-20 19:41:47
【问题描述】:
我不明白我在这里缺少什么,但似乎Console.ReadKey() 仍然处于活动状态,并且在调用Console.ReadKey() 后使用Console.ReadLine() 时导致控制台让我输入两次。
一旦做出选择,我已经上下搜索了如何逃避ReadKey(),但无济于事。
为了澄清,这是出乎意料的行为: 当控制台弹出时,作为示例向用户呈现这三个选项。当用户随后键入“u”或“h”时,控制台不会等待;它会立即执行操作,而无需用户按 Enter。
我做错了什么吗?
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。这与您的体验有何不同?
-
请澄清你的问题,很难理解你在问什么。
-
如果您运行代码,当用户选择 u、h 或 x 时,控制台不会等待,它会执行操作而无需按 Enter... 在此示例中,我放置u 和 h 情况下的“blurp”方法,然后提示用户输入另一个值。当用户输入值并按回车键时,控制台会强制您在退出之前输入 2x 并且永远不会写“您已输入 blah”
-
经过测试,就像@JeremyWinslow saing -
-
@Muhammad 如果控制台不等待第一个输入的输入,那很好。我没有偏好。但真正的问题是,在“Blurp”中的第二个用户输入 ReadLine() 上。当用户输入内容并按下“enter”键时,后续的 writeline 不会写“你已经输入。 .blah”,并且用户必须输入两次回车键......我不明白我在这里做错了什么。
标签: c# console console.readline console.readkey