一尘不染

“否则,是否”比“ switch()情况”更快?[重复]

c#

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


阅读 285

收藏
2020-05-19

共1个答案

一尘不染

对于仅有的几项,差异很小。如果您有很多物品,则一定要使用开关。

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

2020-05-19