c# - switch 语句保证顺序吗?

标签 c# switch-statement hashtable

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

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

最佳答案

不,没有任何保证顺序将被维护,因为这是一个纯粹的编译器实现细节,所以即使它现在是真的,因为.net 5.1 (say),可能是错误的。

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

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

关于c# - switch 语句保证顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955751/

相关文章:

创建具有快速插入、删除、成员资格测试和随机选择的数据结构

c# - 使用 C# 播放 MIDI 声音的最佳方式

Java:在子类下使用带有枚举的switch语句

html - 使用 CSS 使开关切换更暗

php - 继续 2 并中断 switch 语句

Java get() 将初始化的 Hashtable 键更改为 Null

powershell - 在 PowerShell 中将 Hashtable 与 switch case 结合使用

c# - 在抽象通用测试类中定义单元测试

c# - 为服务的 FailureAction 设置什么 REG-BINARY

c# - Webbrowser尝试解析一些使用ajax加载数据的页面