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

什么是RuntimeTypeHandle和Type之间的区别?

如何解决《什么是RuntimeTypeHandle和Type之间的区别?》经验,为你挑选了2个好方法。

为什么我会在代码中使用一个而不是另一个?



1> Rytmis..:

警告:此答案似乎已过时.它是在.NET 4可用之前发布的,显然引入了一些优化Type,因此在这个答案中提供的信息已经过时了.有关详细信息,请参阅此最新答案.

根据Vance Morrison的这篇博文(2006年),RuntimeTypeHandle是一个struct包含非托管指针的值类型(),因此Type.GetTypeHandle(obj).Equals(anotherHandle)更快地用于严格的"完全相同类型"比较obj.GetType().Equals(anotherType)- 后者创建的System.Type实例显然是,更重.

然而,它也不太明显,并且肯定属于"微优化"类别,所以如果你想知道什么时候需要一个,你应该只使用System.Type.



2> 小智..:

在.NET 4.0 Beta 1中RuntimeTypeHandle只是包装RuntimeType.似乎使用它作为廉价Type代理的所有好处都已消失.

上述索赔的证据:

微软的类型参考源System.RuntimeTypeHandle显示这种类型确实只是System.RuntimeType这些天的包装.

Sandro Magi的2013年博客文章"CLR:动态类型测试的成本" 包含一个基准测试和一个最终说明,显示RuntimeTypeHandle在.NET 4中已经失去了所谓的性能优势.

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