为什么我要在代码中使用其中一种而不是另一种?

有帮助吗?

解决方案

警告:这个答案似乎已经过时了。 它是在 .NET 4 可用之前发布的,显然引入了一些关于 Type 从而使这个答案中的信息变得过时。看 这个最近的答案 了解详情。

根据 这篇博文(2006 年),作者:Vance Morrison, RuntimeTypeHandle 是一个值类型(struct) 包装了一个非托管指针,所以 Type.GetTypeHandle(obj).Equals(anotherHandle) 用于严格的“完全相同类型”比较比 obj.GetType().Equals(anotherType) ——后者创造了 System.Type 显然,这些实例更重。

然而,它也不太明显,并且肯定属于“微优化”类别,因此如果您想知道何时需要其中一个,那么您可能应该只使用 System.Type。

其他提示

在 .NET 4.0 Beta 1 中 RuntimeTypeHandle 只是包裹 RuntimeType. 。看来使用它的所有好处都是便宜的 Type 代理已经走了。

上述主张的证据:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top