相关疑难解决方法(0)

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

对于这个程序:

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.

c# switch-statement

38
推荐指数
2
解决办法
2686
查看次数

为什么我需要使用休息?

我想知道为什么C#要求我breakswitch语句中使用,尽管根据定义不允许使用直通语义.因此,编译器可以生成break每个case块的末尾并省去麻烦.

但是,有一种情况(已在本网站上讨论过),我可以提出这可能是明确使用的原因break:

switch (foo) {
    case 0:
    case 1:
        bar();
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

这里,bar()如果foo值为0或1 ,则调用该方法.

如果编译器自己生成break语句,那么这个选项会在最真实的意义上打破.这是它,这是为什么休息是强制性的还是有其他正当理由?

c# switch-statement

15
推荐指数
3
解决办法
2431
查看次数

标签 统计

c# ×2

switch-statement ×2