为什么在c#中编译掉的Switch案例

时间:2016-02-18 22:33:10

标签: c# switch-statement fall-through

众所周知,根据MSDN

,c#中的切换案例不允许您通过
  

在所选开关部分中执行语句列表从第一个语句开始,然后继续执行语句列表,通常直到达到跳转语句,例如break,goto case,return或throw。此时,控制权转移到switch语句之外或转移到另一个案例标签。

     

与C ++不同,C#不允许从一个交换机继续执行   部分到下一个。以下代码会导致错误。

如果是这样的话,为什么要编译:

Numbers|
100|
200|

这不应该被识别为编译时错误吗?

1 个答案:

答案 0 :(得分:6)

首先,您提供的代码不会引发运行时错误。其次,它属于不同的类别(来自相同的MSDN文章,强调我的):

  

switch语句可以包含任意数量的switch部分   部分可以有一个或多个案例标签(如字符串案例所示)   标签示例如下)。但是,没有两个案例标签可能包含   相同的常数值。

区别在于您是否有多个空的case语句,这是允许的。但是,您无法在其中加载case代码,并让它落空。