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

C#如何在Console.ReadLine与Console.Read之间清除控制台缓冲区

C# 控制台清空输入缓冲区实现方案

实现方法

你可以封装一个通用的清空输入缓冲区方法,原理是循环读取输入流中所有已缓冲的可用字符,直到缓冲区为空:

// 放在Program类里作为静态方法即可
static void ClearConsoleInputBuffer()
{
    // 只要缓冲区还有未读取的按键输入,就继续读取丢弃
    while (Console.KeyAvailable)
    {
        // 传入true表示读取的字符不会回显到控制台界面
        Console.ReadKey(intercept: true);
    }
}

注意事项

  • 不要混淆Console.Clear()和上述方法:Console.Clear()是清空控制台的输出内容,对输入缓冲区没有任何作用
  • 该方法可以处理各类残留场景:包括Console.Read()读取后残留的换行符、用户输入多余内容未被读取的残留等

改造后的完整示例代码

using System;

namespace ElsoKonzolAppom
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Write something!");
            string text1 = Console.ReadLine();
            Console.WriteLine("Your text:" + text1);

            // 清空输入缓冲区
            ClearConsoleInputBuffer();

            Console.WriteLine("Write first number:");
            int number1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Your first number:" + number1);

            // 清空输入缓冲区
            ClearConsoleInputBuffer();

            Console.WriteLine("Write second number:");
            int number2 = Console.Read();
            Console.WriteLine("Your second number:" + number2);
        }

        static void ClearConsoleInputBuffer()
        {
            while (Console.KeyAvailable)
            {
                Console.ReadKey(true);
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:36:02