如果我写了这段代码:
typeof(myType).TypeHandle
它会使用反射吗?
与以下内容有何不同?
Type.GetType(string).TypeHandle
是吗?
最佳答案
好吧,这实际上取决于您所说的“反射”是什么意思-并没有严格定义。
在编译后的代码中使用typeof
分为两部分。首先是ldtoken
的使用,它是一条CIL规范中描述的IL指令:
此后,将调用Type.GetTypeFromHandle
。
但是,如果您担心的是,这都比Type.GetType(string)
快得多。
编辑:我只是注意到您的问题的TypeHandle部分。据我所知,即使我真的只需要ldtoken
调用,MS编译器也不会优化对GetTypeFromHandle和TypeHandle的调用。
是否将所有这些都视为“反射”取决于您...