簡體   English   中英

C#錯誤:使用“switch”時未分配的局部變量錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM