0

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

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”语句时,输出仍然完全相同,但光标进一步向下移动了一行,我不明白为什么?

4

3 回答 3

7

因为最后一次阅读linenull当你有if你没有做Console.WriteLine并且你没有额外的新行时。

当你把它弄出来时,你不检查行是否不为空,如果是,null你打印新行而没有任何其他数据,因为line=null

于 2013-10-15T10:56:16.037 回答
2

当您注释掉 if 语句时,这实际上就是您所拥有的

while (line != null)
{
    line = myReader.ReadLine();        
    Console.WriteLine(line);
}

因此,您看到的额外行实际上是nullline时正在打印。

如果包含 if 语句,WriteLine则不会在循环的最后一遍调用。

于 2013-10-15T10:58:15.850 回答
0
 if(line != null)

prints only when string is not NULL

  //if(line != null)

prints even when string is NULL (The reason why the cursor moved to an extra line down further)

于 2013-10-15T11:00:14.467 回答