gpt4 book ai didi

ReadKey等待输入两次后的C# Console.ReadLine

转载 作者:太空狗 更新时间:2023-10-29 21:08:00 35 4
gpt4 key购买 nike

我不明白我在这里遗漏了什么,但似乎 Console.ReadKey() 仍然处于事件状态并且导致控制台让我在使用 Console 时输入两次。调用 Console.ReadKey() 后的 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);
}

最佳答案

我用这段代码进行了测试并得到了相同的行为:

Console.Write("Enter Selection: ");
Console.TreatControlCAsInput = true;
ConsoleKeyInfo selection = Console.ReadKey();
if (selection.Key == ConsoleKey.U)
{
Console.Write("Enter Another Value: ");
string valueStr = Console.ReadLine();
Console.WriteLine("You've entered {0}", valueStr);
}

解决方案是不使用 Console.TreatControlCAsInput = true;,因为这是导致问题的原因。

有关更多信息,请参阅 Stack Overflow 问题 TreatControlCAsInput issue. Is this a bug? .

关于ReadKey等待输入两次后的C# Console.ReadLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42352990/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com