我是前 Pascal 人,目前正在学习 C#。我的问题如下:
下面的代码是否比进行切换更快?
int a = 5; if (a == 1) { .... } else if(a == 2) { .... } else if(a == 3) { .... } else if(a == 4) { .... } else ....
和开关:
int a = 5; switch(a) { case 1: ... break; case 2: ... break; case 3: ... break; case 4: ... break; default: ... break; }
哪个更快?
我在问,因为我的程序具有类似的结构(很多很多“else if”语句)。我应该把它们变成开关吗?
对于少数几项,差异很小。如果您有很多物品,您绝对应该使用开关。
如果一个开关包含五个以上的项目,则使用查找表或哈希列表来实现。这意味着所有项目都获得相同的访问时间,与 if:s 列表相比,最后一个项目需要更多时间才能到达,因为它必须首先评估每个先前的条件。