【发布时间】:2009-10-14 19:08:31
【问题描述】:
我想知道为什么 C# 要求我在 switch 语句中使用 break,尽管根据定义不允许贯穿语义。因此,编译器可以在每个 case-block 的末尾生成 break 并为我省去麻烦。
但是,我可以提出一种情况(已在本网站上讨论过),这可能是明确使用 break 的原因:
switch (foo) {
case 0:
case 1:
bar();
break;
default:
break;
}
这里,如果 foo 的值为 0 或 1,则调用方法 bar()。
如果编译器会自行生成break 语句,则此选项将在最真实的意义上中断。是这样吗,这是强制休息的原因还是有其他好的理由?
【问题讨论】:
-
我个人认为这是 C# 团队做出的一个糟糕的设计决定,也是他们失败的极少数地方之一。
-
@Chris:我强烈建议您阅读已接受答案中链接的 Eric 的博客。它解决了几件我猜是让你烦恼的事情。
-
克里斯,你是怎么做到的?
标签: c# switch-statement