为什么我会在代码中使用一个而不是另一个?
答案 0 :(得分:10)
警告:此答案似乎已过时。它是在.NET 4可用之前发布的,这显然引入了一些关于
Type
的优化,从而在此答案中呈现了信息过时。有关详细信息,请参阅this more recent answer。
根据this blog post (from 2006) by Vance Morrison,RuntimeTypeHandle
是包含非托管指针的值类型(struct
),因此Type.GetTypeHandle(obj).Equals(anotherHandle)
更快用于严格“是完全相同的键入“比obj.GetType().Equals(anotherType)
比较 - 后者创建System.Type
个实例,显然更重。
然而,它也不太明显,并且肯定属于“微优化”类别,所以如果你想知道什么时候需要一个,你应该只使用System.Type。
答案 1 :(得分:6)
在.NET 4.0 Beta 1中RuntimeTypeHandle
只包装RuntimeType
。
似乎将其用作廉价Type
代理的所有好处都已消失。
System.RuntimeTypeHandle
type表明这种类型确实只是System.RuntimeType
这些天的包装。 RuntimeTypeHandle
性能优势已在.NET 4中消失。