为什么我的枚举在 switch 语句中不起作用?

spi*_*e.y 0 .net c# enums switch-statement

我记得过去enum在语句中使用 s switch,并且根据C# how to use enum with switch我正在以正确的方式这样做。但我刚刚尝试再次执行此操作,但收到以下错误:

“ApplicationMode”是一种“类型”,但使用方式类似于“变量”。

这是我正在使用的代码:

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;
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Sud*_*udi 5

问题 1:枚举默认是静态的,所以不要将它们声明为static.

解决方案1:需要删除static枚举声明中的关键字

public enum ApplicationMode
{
    Edit,
    Upload,
    Sync,
    None
}
Run Code Online (Sandbox Code Playgroud)

问题 2:如果switch您需要提供ApplicationMode包含任何有效枚举值的枚举变量[Edit,Upload,Sync,None],但您试图提供enum类型ApplicationMode本身。

解决方案 2:ApplicationMode提供包含任何有效值的枚举变量。

尝试这个:

ApplicationMode appMode = ApplicationMode.Upload; //assign any value
switch(appMode)
Run Code Online (Sandbox Code Playgroud)