1

我对编码比较陌生,对 C# 也很陌生。我正在阅读 MSDN 上的第 9 频道教程,并且遇到了一些我不理解的涉及 Console.ReadLine() 的内容。

作为其中一个教程的一部分,讲师生成了以下代码:

static void Main(string[] args)
    {
        StreamReader myReader = new StreamReader("Values.txt");
        string line = "";

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

        myReader.Close();
        Console.ReadLine();
    }

这段代码有效——它从 Values.txt 中读取一系列数字,每个数字占一行,然后将它们发送到控制台窗口。我的问题是为什么它有效。我的理解是 Console.ReadLine() 从输入流中读取一行。但在这种情况下,尽管它不是 while 循环的一部分,但它正在读取几行。我原以为,正如所写,控制台窗口只会显示 Values.txt 的最后一行,并且 Console.ReadLine() 必须在 if 语句中遵循 Console.WriteLine(line) 才能显示所有行. 我不明白什么?谢谢您的帮助!

4

2 回答 2

0

Console.WriteLine() 是输出到控制台窗口的命令,因为它是 while 循环的一部分。它打印文件中的每一行。

此处末尾的 Console.ReadLine() 仅用于强制调试控制台窗口保持打开状态,直到用户输入并点击输入,通常对于这种情况 Console.ReadKey() 更合适。但在上面的代码中,Console.ReadLine() 并不是从文件中读取数字的代码。这是 myReader.ReadLine(); 在while循环中。因此,while 循环不断从文件中读取行,直到到达文件末尾。

于 2017-03-04T05:26:14.417 回答
0

每次循环执行时,它都会读取一行。如果该行不为空,它将一次又一次地循环,直到没有更多行为止。每次循环并且line不为空时,它都会打印该行。

这一切都发生在最后的Console.ReadLine()陈述之前。所做的只是暂停程序,以便您可以看到输出。

于 2017-03-04T05:32:38.667 回答