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

Rea*_*lar 0 c# performance loops

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

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

我的代码目前是这样的.

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

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

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

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

它是否产生编译时常量?

Pet*_*hie 7

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