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
相关产品推荐
相关产品推荐

