You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按下ESC键后Console.ReadKey()截断Console.WriteLine输出的问题

问题原因与解决方案

现象原因

Console.ReadKey()方法默认会回显用户按下的按键到控制台。ESC键属于控制字符(ASCII码27),它本身不可见,但控制台会为其预留一个输出位置。当后续执行Console.WriteLine("Escape pressed")时,输出的首字母'E'会被这个不可见的控制字符覆盖,最终显示出scape pressed的截断效果。

解决方案

有两种简单有效的解决方式:

方式一:禁用按键回显

调用Console.ReadKey()时传入true参数,该参数表示不回显按下的按键,避免控制字符占据输出位置:

Console.WriteLine("Enter key");
var key = Console.ReadKey(true); // 添加true参数禁用回显

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

方式二:先换行再输出

在ReadKey()之后先执行一次换行,让后续的输出内容在新的一行显示,避免和控制字符位置重叠:

Console.WriteLine("Enter key");
var key = Console.ReadKey();
Console.WriteLine(); // 先输出换行

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

内容的提问来源于stack exchange,提问作者Michał Turczyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:53:09