我在不同的地方读到过,带有 string
case 的 switch
语句可能会被优化(由编译器或 JIT)到哈希表中以提高性能。具有非完美哈希函数的哈希表显然不能保证项目顺序,所以我想知道:
- C# 编译器或 JIT 能否执行将
switch
语句转换为哈希表的优化以提供恒定时间性能? - C# 中的
switch
语句是否保证case
从上到下按顺序检查?
最佳答案
不,没有任何保证顺序将被维护,因为这是一个纯粹的编译器实现细节,所以即使它现在是真的,因为.net 5.1
(say),可能是错误的。
switch/case
构造用于识别不同可用选项之间的唯一选项。所以,顺序并不重要,即使不是从性能的角度来看,但即使在那里,它也基本上是无关紧要的,如果不是,由于上述原因无法预测。
所以如果您正在寻找一些性能瓶颈,请不要注意这一点,并查看程序的其他部分。
关于c# - switch 语句保证顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955751/