小编典典

“else if”比“switch() case”快吗?

all

我是前 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”语句)。我应该把它们变成开关吗?


阅读 91

收藏
2022-03-22

共1个答案

小编典典

对于少数几项,差异很小。如果您有很多物品,您绝对应该使用开关。

如果一个开关包含五个以上的项目,则使用查找表或哈希列表来实现。这意味着所有项目都获得相同的访问时间,与 if:s
列表相比,最后一个项目需要更多时间才能到达,因为它必须首先评估每个先前的条件。

2022-03-22