小编典典

如果与开关速度

c#

由于编译器的优化,switch语句通常比等效的if-else-
if语句(如本文中所述)要快。

这种优化实际上是如何工作的?有人有很好的解释吗?


阅读 235

收藏
2020-05-19

共1个答案

小编典典

编译器可以在适用的情况下构建跳转表。例如,当您使用反射器查看生成的代码时,您会看到对于字符串上的大量开关,编译器实际上将生成使用哈希表调度这些代码的代码。哈希表使用字符串作为键,并将case代码委托为值。

它比许多链式if测试具有更好的渐近运行时间,并且即使相对较少的字符串,实际上也更快。

2020-05-19