【问题标题】:C# Console.ReadLine() reading multiple linesC# Console.ReadLine() 读取多行
【发布时间】:2017-03-04 05:21:05
【问题描述】:

我对编码比较陌生,对 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) 才能显示所有行.我不明白什么?感谢您的帮助!

【问题讨论】:

  • 不,我了解 StreamReader.ReadLine() 的作用以及它的位置。有问题的 Console.ReadLine() 是代码块中的最后一行。

标签: c# console.readline


【解决方案1】:

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

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

【讨论】:

  • Console.WriteLine() 实际上是在控制台窗口中显示文本吗?到目前为止,在本教程中,每次我们使用 Console.WriteLine() 时都会使用 Console.ReadLine()。这对我来说似乎总是违反直觉的,但我把它归结为我有限的理解。但是如果 Console.WriteLine() 实际上是在做显示的工作,而 Console.ReadLine() 只是负责控制台窗口,那就更有意义了。
  • 是 Console.WriteLine() 在控制台窗口中显示文本。
  • Console.ReadLine() 用于在控制台窗口中读取用户的输入。所以用户可以输入输入,然后按回车,这就是 Console.ReadLine() 读取信息的时候。
  • 非常感谢!我希望本教程能提到两者如何协同工作。
  • 当然。我不知道是谁投了反对票——我还没有投票权。
【解决方案2】:

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

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

【讨论】:

  • 谢谢!我对这两种方法的作用有一个根本的误解。
猜你喜欢
  • 2015-05-19
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多