切换案例执行代码而不破坏C#

Switch case execute code without breaking C#

本问题已经有最佳答案,请猛点这里访问。

在C中,是否有可能在不中断的情况下执行开关案例?

这是一个开关示例,其中使用所需的接入

1
2
3
4
5
6
7
8
9
10
11
12
var bar ="Foo";
switch (foo) {
    case 0:
    case 1:
        bar +=" Bar";
    case 2:
    case 3:
        Console.WriteLine(bar);
        break;
    default:
        break;
}

这就是代码应该产生的结果:

1
2
3
4
5
0: Foo Bar
1: Foo Bar
2: Bar
3: Bar
Else: nothing

是否可以这样做,或者我必须这样做:

1
2
3
4
5
6
7
8
9
10
11
12
var bar ="Foo";
if(foo == 0 || foo == 1) bar +=" Bar";
switch (foo) {
    case 0:
    case 1:
    case 2:
    case 3:
        Console.WriteLine(bar);
        break;
    default:
        break;
}


这被称为隐式坠落,C中不支持这种坠落。

不过,您可以使用goto case语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
var bar ="Foo";
switch (foo) {
    case 0:
    case 1:
        bar +=" Bar";
        goto case 2;
    case 2:
    case 3:
        Console.WriteLine(bar);
        break;
    default:
        break;
}


如果代码中不强制使用switch案例,则可以简化代码。您可以尝试如下操作:

1
2
3
4
5
6
7
8
var bar ="Foo";
if(foo == 0 || foo == 1) bar +=" Bar";
if(foo >= 0 && foo <= 3) //Replacement of switch with single if condition
    Console.WriteLine(bar);

Output:
if foo == 1 then print ->"Foo Bar"
if foo == 3 then print ->"Foo"