c# – 是“else if”比“switch()case”更快吗?

Possible Duplicate:
07000

我是一个前帕斯卡的家伙,目前学习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的列表相比,其中最后一个项目需要更多的时间来达到,因为它必须首先评估每个先前的条件。

转载注明原文:c# – 是“else if”比“switch()case”更快吗? - 代码日志