2016-03-24 40 views
-1

我正在做一個基本的聊天程序作爲論文,我遇到了這個問題。在C#開關櫃中使用未分配的變量

enter image description here

正如你可以在圖片中看到,它給我的線107的未賦值的變量錯誤,但它工作完全正常後(如在管線125)。切換案例總是從案例1開始,在案例1中我創建了一個名爲login的新UserLogin表單。之後,它決定是否應該轉向情況2或3.除了第107行之外,它們都沒有任何未分配的變量錯誤。我真的不知道爲什麼會發生這種情況。

+0

包括switch語句和'login'聲明 –

+1

如果你註釋掉第107行,你可能會在下一行使用'login'看到同樣的錯誤。編譯器僅在您第一次使用未分配的變量時標記。 –

+4

請發佈您的代碼,而不是您的代碼的屏幕截圖。 – vesan

回答

3

即使你知道在命中2或3之前你會打1號案例,編譯器不會。

您需要在switch塊之前指定login值,即使它只是null

login = null; 

switch (...) 
{ 
    case 1: 
     login = new UserLogin(); 
     ... 

如果你知道你是總是會打1的情況下首先,考慮只登錄新UserLogin分配之前,你甚至進入switch聲明。

3

這是因爲變量唯一分配的位置是case 1。您需要將其分配到switch語句之外,因爲有可能永遠不會執行該變量,因此該變量將永遠不會被分配。