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

时间:2008-09-02 19:20:08

标签: c# .net reflection

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

2 个答案:

答案 0 :(得分:10)

  

警告:此答案似乎已过时。它是在.NET 4可用之前发布的,这显然引入了一些关于Type的优化,从而在此答案中呈现了信息过时。有关详细信息,请参阅this more recent answer

根据this blog post (from 2006) by Vance MorrisonRuntimeTypeHandle是包含非托管指针的值类型(struct),因此Type.GetTypeHandle(obj).Equals(anotherHandle)更快用于严格“是完全相同的键入“比obj.GetType().Equals(anotherType)比较 - 后者创建System.Type个实例,显然更重。

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

答案 1 :(得分:6)

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

上述索赔的证据: