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

C# Console.ReadLine()每次按键换行 输入逐字符重复显示问题

问题原因

你遇到的输入字符重复显示问题是由Console.ReadKey()的默认特性导致的:
无参的Console.ReadKey()方法默认不会拦截按键输入,你按下的选择键会被直接回显到控制台,同时会修改控制台的输入模式,干扰后续Console.ReadLine()的回显逻辑,最终出现每个输入字符重复打印的现象。

解决方案

按以下优先级修改代码即可解决:

  1. 替换Main方法中的无参Console.ReadKey()调用,使用带拦截参数的重载:
// 原代码
ConsoleKeyInfo keyPressed = Console.ReadKey();
// 修改为
ConsoleKeyInfo keyPressed = Console.ReadKey(true);

传入true参数表示拦截用户按下的按键,不将其回显到控制台,也不会打乱后续的行输入模式。

  1. 如果修改后仍存在问题,可以在调用Console.ReadLine()之前手动清空残留的输入缓冲区,避免冗余输入干扰:
static void EnterCharacterName()
{
    String characterName;
    do
    {
        Console.Write("Podaj nazwę bohatera:");
        // 清空输入缓冲区残留内容
        while (Console.KeyAvailable)
        {
            Console.ReadKey(true);
        }
        characterName = Console.ReadLine();
    } while (!IsCharacterNameValid(characterName));
}
  1. 若以上修改都无效,可验证是否为IDE调试控制台的兼容问题:直接在系统自带的cmd/PowerShell中运行编译后的exe文件,如果运行正常则说明是IDE内置控制台的bug,不影响最终发布的程序使用,升级IDE版本即可解决兼容问题。

内容的提问来源于stack exchange,提问作者jasiu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:45:05