2014-04-26 79 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

这是我的特权。 –

相关问题