2014-04-26 119 views
0

我記得過去在switch聲明中使用enum s,並且根據C# how to use enum with switch我正在做正確的方法。但我只是試着做一遍,我收到以下錯誤:爲什麼我的枚舉不能在switch語句中工作?

'ApplicationMode' is a 'type' but is used like a 'variable'.

下面是我使用的代碼:

public static enum ApplicationMode 
{ 
    Edit, 
    Upload, 
    Sync, 
    None 
} 

private void edit_Click(object sender, EventArgs e) 
{ 
    switch(ApplicationMode) // This is where I see the error. 
    { 
     case ApplicationMode.Edit: 
      break; 
     ... 
    } 
} 

我做了什麼錯?

+3

錯誤消息告訴確切原因。 – qxg

+2

switch語句期望您提供一個'ApplicationMode'類型的變量,而不是類型本身。這就是爲什麼你得到一個編譯錯誤。您不會在程序中的任何地方顯示「ApplicationMode」類型的變量。有一套嗎?更重要的是,你想要做什麼?用戶點擊了「編輯」按鈕。你想現在編輯,還是要將模式設置爲「編輯」? –

回答

4

問題1:枚舉默認是靜態的,所以不要聲明它們爲static

解決方案1:你需要刪除static關鍵字在枚舉聲明

public enum ApplicationMode 
{ 
    Edit, 
    Upload, 
    Sync, 
    None 
} 

問題2:switch情況下,需要提供的枚舉ApplicationMode變量包含任何有效的枚舉值[Edit,Upload,Sync,None],但您正嘗試提供enum型號ApplicationMode本身。

解決方案2:提供包含任何有效值的枚舉ApplicationMode變量。

試試這個:

ApplicationMode appMode = ApplicationMode.Upload; //assign any value 
switch(appMode) 
+0

謝謝@蘇達卡,你只是想起我曾經這樣做過。你的回答非常有幫助。 –

+0

這是我的特權。 –

相關問題