这是从C语言继承的特性。
不过这个的确容易犯错,所以Anders在C#做了个修正。
至于C语言为什么会如此设计,具体原因不可考,猜测一下:
1、这样规则最简洁,换言之swicth就可以完全等价于if goto else if goto这样,以case xx:作为上一个case的结束,在语义上与break重复,规则更复杂,并且想要贯穿时需要增加额外的代码:goto case next;。这种语法对应到汇编的规则也是最简洁的。
2、便于叠加多个case,例如:
case 0: case 1: //xxx
这种写法很常见。
问C语言