在下面的代码中,我想问一下:在用值初始化之前,作者如何评估 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();
答案 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();
};