2013-10-15 2 views
0

Взгляните на этот код ниже, я полностью понимаю, что делает эта программа, но есть одно сомнение относительно вывода программы на консоль.C# В то время как логика цикла

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

Мой вопрос заключается в том, что, когда я комментарий выключение «если» заявление в то время цикла, выход остается точно такой же, но курсор перемещает дополнительная линия вниз, и я не понял почему?

+0

Move Visual Studio с одной стороны вашего экрана, вашего окна консоли на другую сторону и выполните код с F10, чтобы понять, почему. – CodeCaster

+2

1) Вы не закрываете читателя. 2) посмотрите 'System.IO.File.ReadallLines()'. –

ответ

7

Поскольку последний line является прочитанным null и когда у вас есть if вы не делаете Console.WriteLine и не имеют дополнительную новую строки.

Когда вы commet это не проверить, если строка не является нулевым, и если это null печати новой строки без каких-либо других данных, поскольку line=null

+0

Спасибо за объяснение! – Neville

2

Это эффективно, что у вас есть, когда вы закомментировать, если заявление

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

Так дополнительные линии вы видите, line печатается, когда это на самом деле нулевой.

Когда оператор if включен, WriteLine не вызывается на заключительный проход цикла. только

+0

Спасибо за объяснение! – Neville

0
if(line != null) 

печатает, когда строка не NULL

//if(line != null) 

печатает даже когда строка NULL (Причина, по которой курсор перемещается на дополнительную линию дальше вниз)

+2

Использование слова «Пусто» для объяснения «null», скорее всего, путает вещи для новичков как «string.Empty! = Null» – weston

+0

@weston Хорошо. Модифицировано. –

Смежные вопросы