[英]While looping and variable initialization
在下面的代碼片段中,我想問:作者在使用值初始化變量之前,如何在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;
while((line = myReader.ReadLine()) != null)
{
Console.WriteLine(line);
}
至於您提供的作者代碼段,則將line初始化為空字符串。 因此,它總是至少進入一次while
循環。 然后,它從讀者那里抓一行,如果它不為null,則對其進行填充,然后繼續。 我永遠不會這樣寫,因為您以這種方式進行了太多檢查。 也可以做一次單項作業並在一行中簽入。
簡短的答案: 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();
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.