众所周知,根据MSDN
,c#中的切换案例不允许您通过在所选开关部分中执行语句列表从第一个语句开始,然后继续执行语句列表,通常直到达到跳转语句,例如break,goto case,return或throw。此时,控制权转移到switch语句之外或转移到另一个案例标签。
与C ++不同,C#不允许从一个交换机继续执行 部分到下一个。以下代码会导致错误。
如果是这样的话,为什么要编译:
Numbers|
100|
200|
这不应该被识别为编译时错误吗?
答案 0 :(得分:6)
首先,您提供的代码不会引发运行时错误。其次,它属于不同的类别(来自相同的MSDN文章,强调我的):
switch语句可以包含任意数量的switch部分 部分可以有一个或多个案例标签(如字符串案例所示) 标签示例如下)。但是,没有两个案例标签可能包含 相同的常数值。
区别在于您是否有多个空的case
语句,这是允许的。但是,您无法在其中加载case
代码,并让它落空。