C#如何实现控制台语句逐字符逐个打印的效果
C# 控制台逐字符打印句子实现方案
现有代码问题点
- 调用
Array.Reverse()反转了字符数组,会导致输出顺序和原句完全相反 - 使用
Console.WriteLine()打印字符,每次打印后自动换行,每个字符都会单独占据一行 - 之前使用
Thread.Sleep()无法看到逐字效果,是因为控制台默认采用行缓冲机制,只有遇到换行符、输出缓存已满、程序退出三个场景才会把缓存内容输出到屏幕,使用Console.Write()打印单字符不会触发缓存刷新,所有字符会等到打印完成后统一显示,看不到分步效果
兼容全版本的实现代码
using System; using System.Threading; namespace CharPrintDemo { class Program { static void Main(string[] args) { string streamer = "Who is your favorite streamer?"; foreach (char c in streamer) { Console.Write(c); // 强制刷新输出缓存,立刻显示当前字符 Console.Out.Flush(); // 调整数值控制打印速度,单位为毫秒,数值越大打印越慢 Thread.Sleep(100); } Console.ReadLine(); } } }
.NET 5+ 简化写法
如果运行环境为.NET 5及以上版本,可以开启控制台自动刷新属性,无需每次手动刷新缓存:
using System; using System.Threading; namespace CharPrintDemo { class Program { static void Main(string[] args) { // 开启自动刷新,每次输出后直接同步到屏幕 Console.Out.AutoFlush = true; string streamer = "Who is your favorite streamer?"; foreach (char c in streamer) { Console.Write(c); Thread.Sleep(100); } Console.ReadLine(); } } }
内容的提问来源于stack exchange,提问作者T-T
相关产品推荐
相关产品推荐

