在C#中是否可以在不中断的情况下执行切换条件?
这是一个使用所需中断的开关示例
var bar = "Foo";
switch (foo) {
case 0:
case 1:
bar += " Bar";
case 2:
case 3:
Console.WriteLine(bar);
break;
default:
break;
}
这是代码应该产生的:
0: Foo Bar
1: Foo Bar
2: Bar
3: Bar
Else: nothing
是否有可能这样做?或者我必须这样做:
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;
}
答案 0 :(得分:3)
这称为隐式下降,C#不支持这种下降。
不过,您可以使用goto case
语句。
var bar = "Foo";
switch (foo) {
case 0:
case 1:
bar += " Bar";
goto case 2;
case 2:
case 3:
Console.WriteLine(bar);
break;
default:
break;
}
答案 1 :(得分:0)
如果您的代码中不强制使用switch
大小写,则可以简化代码。
您可以尝试这样的事情:
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"