3

我在很多地方读到过,switch带有 case 的语句string可能会被优化(通过编译器或 JIT)到哈希表中以提高性能。具有不完美散列函数的散列表显然不能保证项目顺序,所以我想知道:

  1. C# 编译器或 JIT 能否执行优化,将switch语句转换为哈希表以提供恒定时间性能?
  2. C#中的switch语句是否保证case按从上到下的顺序检查 's?
4

1 回答 1

3

不,没有任何保证将保持顺序,因为这是纯粹的编译器实现细节,所以即使现在是真的,因为.net 5.1(比如说)可能是错误的。

switch/case构造用于识别不同可用选项之间的唯一选项。所以,顺序无关紧要,如果不是从性能的角度来看,但即使在那里,它也基本上是无关紧要的,如果不是,由于上述原因无法预测。

因此,如果您正在寻找一些性能瓶颈,请不要注意这一点,并查看程序的其他部分。

于 2013-02-19T11:06:02.303 回答