作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 switch 语句,如下所示:
switch (condition)
{
case 0:
case 1:
// Do Something
break;
case 2:
// Do Something
case 3:
// Do Something
break;
}
我收到一个编译错误,告诉我 Control 不能从一个 case 标签('case 2:')落到另一个
嗯……是的,你可以。因为您正在从 case 0:
到 case 1:
执行此操作。
事实上,如果我删除我的 case 2:
及其相关任务,代码会编译并从 case 0:
落入 case1:
.
那么这里发生了什么,我怎样才能让我的 case 语句失败并执行一些中间代码?
最佳答案
堆叠标签和 fall-through 是有区别的。
C# 支持前者:
case 0:
case 1:
break;
但不是失败:
case 2:
// Do Something
case 3:
// Do Something
break;
如果你想要失败,你需要明确:
case 2:
// Do Something
goto case 3;
case 3:
// Do Something
break;
原因很明显,隐式的失败会导致代码不干净,尤其是当你有不止一两行代码时,并且控制流的方式不再清晰。通过强制显式失败,您可以轻松地遵循流程。
引用:msdn
关于c# - 通过 switch 语句掉线(有时有效?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12390245/
我是一名优秀的程序员,十分优秀!