Console.ReadKey() 在按下 ESC 后消耗 Console.WriteLine 的输出[重复]

问题描述 投票:0回答:1

我有一个简单的问题,但我无法弄清楚。我尝试寻找其他帖子,但找不到这个问题的直接答案。

考虑这样的代码:

Console.WriteLine("Enter key");
var key = Console.ReadKey();

if (key.Key == ConsoleKey.Escape)
{
    Console.WriteLine("Escape pressed");
}
else
{
    Console.WriteLine("Escape Not Pressed");
}

当我按下 Escape 时,我会得到如下输出:

scape pressed

注意第一个字母被剪掉了。

为什么会发生这种情况以及解决方案是什么?

c# .net console
1个回答
0
投票

在读取键后添加

Console.WriteLine();
。 Readkey 不执行换行,控制台上的 Escape“字符”会导致该行为。

或者,您可以先尝试

Console.Readkey(true);
,但根据我的经验,有时也会导致奇怪的行为,因为您必须按两个键才能让程序做出反应。

© www.soinside.com 2019 - 2024. All rights reserved.