循环和变量初始化

时间:2012-10-01 23:09:42

标签: c#

在下面的代码中,我想问一下:在用值初始化之前,作者如何评估 while循环中的变量'line'?

StreamReader myReader = new StremReader("Values.txt");

string line = "";

while (**line != null**)

{

    line = myReader.ReadLine();
    if (line != null)
        console.WriteLine(line);
}

myReader.Close();

console.ReadLine();

3 个答案:

答案 0 :(得分:4)

初始化为一个值:空字符串:

string line = "";

即使它没有值并且是null,它仍然可以通过比较while循环来测试它是否为空。

现在,这是一个未初始化的变量:

string line; // Help! I'm only declared!
while (line != null)
{
    // do stuff
}

尝试编译会给你这个错误:“使用未分配的局部变量'line'”。但是,分配任何值(包括""null都会使事情再次正确。

答案 1 :(得分:1)

快速易读的方式:

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

至于作者提供的代码片段,line初始化为空字符串。因此,它总是会至少进入while循环一次。然后它从阅读器中抓取一条线,如果它不为空则对它进行处理,并继续前进。我永远不会这样写,因为你正在做太多的检查。不妨做一个单一的任务&检查一行。

答案 2 :(得分:0)

简答: line变量已初始化为空字符串""

关于给定的代码示例,我建议使用using构造来确保尽快处理未托管代码。

using (StreamReader myReader = new StreamReader("Values.txt"))
            {
                string line = "";
                while (line != null)
                {

                    line = myReader.ReadLine();
                    if (line != null)
                        console.WriteLine(line);
                }

                //myReader.Close();
                console.ReadLine();
            };