C# 循环和变量初始化时

C# 循环和变量初始化时,c#,C#,在下面的代码单反中,我想问:作者在用值初始化变量“line”之前,如何计算while循环中的变量“line” StreamReader myReader = new StremReader("Values.txt"); string line = ""; while (**line != null**) { line = myReader.ReadLine(); if (line != null) console.WriteLine(line); } m

在下面的代码单反中,我想问:作者在用值初始化变量“line”之前,如何计算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();
它由一个值初始化:空字符串:

string line = "";
即使它没有值并且是
null
,仍然可以通过类似
while
循环中的比较来测试它是否为null

现在,这就是未初始化变量的外观:

string line; // Help! I'm only declared!
while (line != null)
{
    // do stuff
}
如果试图编译,会出现以下错误:“使用未分配的局部变量‘line’”。但是分配任何值,包括
null
,都会使事情恢复正常。

它是用一个值初始化的:空字符串:

string line = "";
即使它没有值并且是
null
,仍然可以通过类似
while
循环中的比较来测试它是否为null

现在,这就是未初始化变量的外观:

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

如果试图编译,会出现以下错误:“使用未分配的局部变量‘line’”。但是分配任何值,包括
null
,都会使事情再次恢复正常。

一种快速且易于阅读的方法:

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

至于您提供的作者代码片段,第行被初始化为空字符串。因此,它总是会进入
循环至少一次。然后它从读卡器中抓取一行,如果它不是空的,就处理它,然后继续。我决不会那样写,因为你那样做的支票太多了。不妨只做一项作业,并检查一行。

一种快速且易于阅读的方式:

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

至于您提供的作者代码片段,第行被初始化为空字符串。因此,它总是会进入
循环至少一次。然后它从读卡器中抓取一行,如果它不是空的,就处理它,然后继续。我决不会那样写,因为你那样做的支票太多了。最好只做一个赋值并签入一行。

简短回答:
变量已用空字符串
初始化

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

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();
            };

简短回答:
变量已用空字符串
初始化

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

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();
            };

嗯,变量是初始化的吗?空字符串不同于
null
referencehmm变量是否已初始化?空字符串与
null
引用不同