![](/img/trans.png)
[英]“Use of unassigned local variable” compiler error for switch statement in C#?
[英]C# Error: Unassigned local variable error when using “switch”?
我想要實現的是,顯示以/開頭的行數(用戶通過comboBox1選擇類型)給定字符(通過textbox1)。
試圖編譯這段代碼:
string needle=textBox1.Text.Trim(), cboxSelection = comboBox1.Text;
int count;
switch (cboxSelection)
{
case "Starting with":
count = File.ReadLines(openFileDialog1.FileName).Count(line => Regex.IsMatch(line, "^" + needle + ".*$"));
break;
case "Ending with":
count = File.ReadLines(openFileDialog1.FileName).Count(line => Regex.IsMatch(line, "^.*" + needle + ".*$"));
break;
}
string strCount = count.ToString(); // error line
label6.Text = "There are " + strCount + " lines " + cboxSelection + " " + needle + " character.";
獲取錯誤消息: Use of unassigned local variable 'count'
。 我錯過了什么?
您的本地count
變量尚未在使用點明確分配。 要么聲明為
int count = 0
;
或者在case語句中添加一個default
子句:
default: count = 0;
您的switch
語句無法保證輸入任何一種情況,因此count
可以保持未分配狀態。 如果需要這兩種情況之一,則應在default
情況下拋出異常:
default: throw new ArgumentException("Invalid selection");
您應始終在switch語句中使用default
大小寫來指定默認值或防止意外狀態。
you can try with int count = 0;
and add ; not , between two instructions
string needle=textBox1.Text.Trim();
cboxSelection = comboBox1.Text;
未在所有代碼路徑上分配Count
。 如果您的開關沒有“開始於”或“結束於”,則它將為null
。
你可以初始化它:
int count = 0;
這是因為你沒有覆蓋你的交換機中的所有可能性...所以你的代碼中有一個“路徑”,你可以在其中獲得label6.Text
永遠不會分配count
。
您應該為count
分配初始值或為交換機添加default
你的switch語句並不涵蓋所有情況(實際上它不能,cboxSelection是一個字符串),所以在你使用它之前,count可能沒有分配任何東西。
將一個默認大小寫添加到交換機以修復它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.