如果我写了这段代码:

typeof(myType).TypeHandle

它会使用反射吗?

与以下内容有何不同?
Type.GetType(string).TypeHandle

是吗?

最佳答案

好吧,这实际上取决于您所说的“反射”是什么意思-并没有严格定义。

在编译后的代码中使用typeof分为两部分。首先是ldtoken的使用,它是一条CIL规范中描述的IL指令:



此后,将调用Type.GetTypeFromHandle

但是,如果您担心的是,这都比Type.GetType(string)快得多。

编辑:我只是注意到您的问题的TypeHandle部分。据我所知,即使我真的只需要ldtoken调用,MS编译器也不会优化对GetTypeFromHandle和TypeHandle的调用。

是否将所有这些都视为“反射”取决于您...

10-07 21:24