C# 循环和变量初始化时
在下面的代码单反中,我想问:作者在用值初始化变量“line”之前,如何计算while循环中的变量“line”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
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
引用不同