C#While循环逻辑

时间:2013-10-15 10:54:51

标签: c# .net

看看下面这段代码,我完全理解这个程序正在做什么,但是对于控制台上程序的输出有一个疑问。

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();
}
}

,输出如下

enter image description here

我的问题是,当我在while循环中注释'if'语句时,输出仍然完全相同,但光标会进一步向下移动一行,我不明白为什么?

3 个答案:

答案 0 :(得分:7)

由于上次引用的linenull,而当您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也会打印(光标进一步向下移动一行的原因)