这是我的原始帖子,引发了一些争论… 因为它是错误的 :
switch语句与大型if-else语句不同。每个案例都必须是唯一的并进行静态评估。无论您有多少种情况,switch语句都会执行恒定的时间分支。if-
else语句评估每个条件,直到找到一个满足条件的条件。
实际上,C#switch语句 并不 总是恒定时间分支。
在某些情况下,编译器将使用CIL switch语句,该语句实际上是使用跳转表的恒定时间分支。但是,在稀疏情况下,如Ivan
Hamilton指出的,编译器可能会完全生成其他内容。
实际上,通过编写各种C#switch语句(有些稀疏,有些密集)并使用ildasm.exe工具查看生成的CIL,很容易验证。



