当前位置:  开发笔记 > 编程语言 > 正文

typeof(myType).TypeHandle是否使用反射?

如何解决《typeof(myType).TypeHandle是否使用反射?》经验,为你挑选了1个好方法。

如果我写了这段代码:

typeof(myType).TypeHandle 

它会用反射吗?

与以下有多大不同:

Type.GetType(string).TypeHandle

是吗?



1> Jon Skeet..:

嗯,这实际上取决于你所说的"反思" - 这并不是严格定义的.

typeof在编译的代码中使用有两个部分.第一个是ldtoken在CIL规范中使用的是这样描述的IL指令:

ldtoken指令为指定的元数据标记推送RuntimeHandle.令牌应为以下之一:

methoddef,methodref或methodspec:推送RuntimeMethodHandle

typedef,typeref或typespec:推送RuntimeTypeHandle

fielddef或fieldref:推送RuntimeFieldHandle

推送到堆栈上的值可用于调用系统类库中的反射方法

在此之后,拨打电话Type.GetTypeFromHandle.

Type.GetType(string)如果这是您所关注的,那么这一切都要快得多.

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

是否所有这些都被视为"反思"取决于你......

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有