2017-03-04 274 views
0

私は比較的新しいC#をコーディングし、新しいものです。私はMSDNのChannel 9チュートリアルを通して作業しており、Console.ReadLine()には理解できないことがあります。C#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()が入力ストリームから1行を読み込むのは私の理解です。しかし、この場合、whileループの一部ではないにもかかわらず、いくつかの行を読み込んでいます。私は書かれているように、コンソールウィンドウにはValues.txtの最後の行しか表示されず、すべての行を表示するためにConsole.ReadLine()がifステートメント内のConsole.WriteLine(行) 。私は何を理解していないのですか?助けてくれてありがとう!

+0

いいえ、私はStreamReader.ReadLine()が何をし、どこにあるのか理解しています。問題のConsole.ReadLine()は、コードブロックの最後の行です。 – namtrahj

答えて

0

Console.WriteLine()はコンソールウィンドウに出力するコマンドで、whileループの一部です。ファイルからすべての行を出力します。

ここの最後のConsole.ReadLine()は、ユーザー入力とヒットが入力されるまでデバッグコンソールウィンドウを強制的に開いたままにするためにのみ追加されます。通常、Console.ReadKey()が適切です。 しかし、上記のコードでは、Console.ReadLine()はファイルから数値を読み取るコードではありません。これはmyReader.ReadLine()です。 whileループで。 したがって、whileループは、ファイルの終わりに達するまでファイルから行を読み取り続けます。

+0

これがなぜ投票されたのかわかりません! – Armin

+0

Console.WriteLine()は実際にコンソールウィンドウにテキストを表示していますか?これまでのチュートリアルでは、Console.WriteLine()を使用するたびにConsole.ReadLine()が続きました。それは常に私には直感的ではないように思われましたが、私はそれを私の限られた理解にまでチョークしました。しかし、Console.WriteLine()が実際に表示の仕事をしていて、Console.ReadLine()がコンソールウィンドウを担当しているだけであれば、もっと意味があります。 – namtrahj

+0

はいConsole.WriteLine()は、コンソールウィンドウにテキストを表示します。 – Armin

0

ループが実行されるたびに、行が読み込まれます。行がヌルでない場合は、行がなくなるまで繰り返します。そして、それがループし、lineがヌルでないときは、その行を出力します。

これはすべて、最後にConsole.ReadLine()ステートメントの前に発生します。そうするだけで、プログラムを一時停止して出力を見ることができます。

+0

ありがとう!私は2つの方法が何をしているのかについて基本的な誤解を抱いていました。 – namtrahj

関連する問題