我可以通过移出循环类型来加速代码吗?

时间:2014-01-31 16:14:17

标签: c# performance loops

我的代码在循环内多次执行typeof

我想知道是否应该在循环外调用typeof并使用变量?

我的代码目前是这样的。

for(int i=0; i < 1000; i++)
{
    Type t = Foo(i);
    if(t == typeof(string))
    {
        //....
    }
}

以下代码是更快,更慢还是没有区别?

Type s = typeof(string)
for(int i=0; i < 1000; i++)
{
    Type t = Foo(i);
    if(t == s)
    {
        //....
    }
}

而不是运行一些C#测试来查看哪些运行速度更快。我正在寻找一个可以解释使用typeof时会发生什么的答案。

它是否产生编译时常量?

1 个答案:

答案 0 :(得分:7)

否(如在极其微不足道的情况下),typeof()在编译时完成 - 工作是类型比较。你应该问的是为什么你在使用多态时检查类型。