C#输入空白字符无法跳出文件写入死循环问题咨询
问题原因
- 逻辑顺序错误:代码先执行
writer1.WriteLine(writing)写入操作,再判断输入是否为空白。即便输入符合退出条件,也会先把空白内容写入文件后才退出,不会提前终止。 - 空白匹配范围不全:当前仅判断了单个空格
" "和空字符串""两种情况,用户输入多个空格、制表符等全空白内容时,无法触发退出逻辑。 - 未处理边缘情况:未覆盖
Console.ReadLine()返回null的场景(比如用户按下Ctrl+Z结束输入),直接判断可能触发空引用异常。
修复方案
调整写入循环的逻辑顺序,先判断输入是否为全空白内容,符合条件直接退出,不符合再写入文件。可以直接调用C#内置的string.IsNullOrWhiteSpace()方法,该方法会自动匹配空字符串、null、任意数量的空白字符(空格、制表符、换行符等),不用手动逐个枚举判断。
修复后的核心代码片段如下:
while (true) { Console.WriteLine("What do you want to drive on the file? write a blank space to finish"); writing = Console.ReadLine(); // 先判断是否符合退出条件 if (string.IsNullOrWhiteSpace(writing)) { break; } // 符合写入条件再执行写入 writer1.WriteLine(writing); }
内容的提问来源于stack exchange,提问作者Juan Andres Gomez Botero
相关产品推荐
相关产品推荐

