Mic*_*kus 2 c# switch-statement fall-through
我有一个switch语句,如下所示:
switch (condition)
{
case 0:
case 1:
// Do Something
break;
case 2:
// Do Something
case 3:
// Do Something
break;
}
Run Code Online (Sandbox Code Playgroud)
我收到编译错误告诉我 Control cannot fall through from one case label ('case 2:') to another
嗯......是的,你可以.因为你是从做它case 0:通过对case 1:.
事实上,如果我删除了我case 2:和它的相关任务,代码就会编译并从中case 0:进入case1:.
那么这里发生了什么,我怎样才能让我的case语句通过并执行一些中间代码?
Fem*_*ref 10
堆叠标签和掉落之间存在差异.
C#支持前者:
case 0:
case 1:
break;
Run Code Online (Sandbox Code Playgroud)
但不是落空:
case 2:
// Do Something
case 3:
// Do Something
break;
Run Code Online (Sandbox Code Playgroud)
如果你想要堕落,你需要明确:
case 2:
// Do Something
goto case 3;
case 3:
// Do Something
break;
Run Code Online (Sandbox Code Playgroud)
推理显而易见,隐式直通可能导致不干净的代码,特别是如果你有多于一行或两行,并且不清楚控制如何流动.通过强制显式降低,您可以轻松地遵循流程.
参考:msdn