是否值得为多次使用保存typeof()调用的结果?

Lee*_*son 7 .net c# optimization typeof

如果我要在同一类型上使用C#typeof调用的结果,是否值得保存该值,或者只是多次调用typeof().对我来说,多种类型是优选的,因为它可以更简洁,可读的代码.我想这取决于编译器是否会"内联"代码?

Ali*_*tad 8

不,typeof()是一个编译时关键字.

有可能是在保持的结果的小利object.GetType()Type变量.


更新

Type t = typeof(string);
Run Code Online (Sandbox Code Playgroud)

这就是这行编译的内容

IL_0000:  nop
  IL_0001:  ldtoken    [mscorlib]System.String
  IL_0006:  call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
  IL_000b:  stloc.0
  IL_000c:  ldloc.0
Run Code Online (Sandbox Code Playgroud)

所以在内部,它将使用GetTypeFromHandle我想象的句柄,这是一个指向堆中类型位置的指针.

因此,调用它一次并保留参考值可能会有一点点好处,尽管它是微不足道的.