为什么这个转到这个开关里面不起作用?

Bra*_* Ds 38 c# switch-statement

对于这个程序:

class Program
{
    static void Main(string[] args)
    {
        var state = States.One;
        switch (state)
        {
            case States.One:
                Console.WriteLine("One");
                break;
            case States.Zero:
                goto case States.One;
        }
    }
}

public enum States : ulong
{
    Zero = 0,
    One = 1,
}
Run Code Online (Sandbox Code Playgroud)

我有:

"switch表达式或case标签必须是bool,char,string,integral,enum或相应的可空类型"

state变量是enum类型.如果我评论该goto case行,错误就会消失.

我正在使用VS 2013. + .NET 4.5.1.

Eup*_*ric 64

这是C#编译器在输入时已知的错误,并且您同时使用它.如果您删除从,它编译就好了.而且因为没有多少人遇到这个问题,他们并没有专注于修复它.enumulonggoto caseulongenum

  • 为了记录:它已在Rosyln中修复,所以最后一句也许是不公平的. (39认同)

T_D*_*T_D 6

根据您的使用情况,这也可能是您的选择:

switch (state)
{
    case States.Zero:
    case States.One:
        Console.WriteLine("One");
        break;
}
Run Code Online (Sandbox Code Playgroud)

这应该根据这里的示例工作:http://msdn.microsoft.com/de-de/library/06tc147t.aspx