switch语句的“不准遍历”

C 和 C ++语言允许 switch 语句中 case 标签后不出现 break 语句从而可以继续执行下面 case 后的语句。但是这往往由于程序员忘记写 break 语句而成为一个难以发现的漏洞,所以 C #不允许这样,它要求每个标签项后使用 break 语句或跳转语句 goto ,即不允许从一个 case 自动遍历到其他 case ,否则编译时报错,即使是 default 语句后也不例外。

这个特定决定了三个特点:

a )我们可以任意排列 switch 语句中的 case 项而不会影响 switch 语句的功能。

b )如果要像 c/c++ 那样在执行完后继续遍历其他的语句,只要在 case 语句后加上以下两条跳转语句中的一条即可: goto case label ; goto default 。

3 )除了 goto 外, throw 和 return 也可以。

C # switch 语句与 C/C++ 另一个不同点是 C #同 VB 一样把字符串常量当作常量表达式来使用,但 C/C++ 却不支持。所以在 C #中, case “OK”: 这样的形式也是支持的。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus