看看下面这段代码,我完全理解这个程序正在做什么,但是对于控制台上程序的输出有一个疑问。
using System;
using System.IO;
class program
{
public static void Main()
{
StreamReader myReader = new StreamReader("TextFile1.txt");
string line = "";
while (line != null)
{
line = myReader.ReadLine();
if(line != null)
Console.WriteLine(line);
}
Console.ReadLine();
}
}
,输出如下
我的问题是,当我在while循环中注释'if'语句时,输出仍然完全相同,但光标会进一步向下移动一行,我不明白为什么?
答案 0 :(得分:7)
由于上次引用的line
为null
,而当您if
时,您没有Console.WriteLine
并且您没有其他新行。
当你完成它时,你不会检查行是否为空,如果它是null
你打印新行没有任何其他数据,因为line=null
答案 1 :(得分:2)
当您注释掉if语句时,这实际上就是你所拥有的
while (line != null)
{
line = myReader.ReadLine();
Console.WriteLine(line);
}
因此,当您实际上 null 时,您看到的额外行是line
。
当包含if语句时,在循环的最后一遍中不会调用WriteLine
。
答案 2 :(得分:0)
if(line != null)
仅在字符串不为NULL时打印
//if(line != null)
即使字符串为NULL也会打印(光标进一步向下移动一行的原因)