为什么我会在我的代码中使用一个而不是另一个?
Deeno
问问题
3568 次
2 回答
11
警告:此答案似乎已过时。它是在 .NET 4 可用之前发布的,这显然引入了一些优化
Type
,因此使这个答案中的信息过时了。有关详细信息,请参阅此更新的答案。
根据Vance Morrison的这篇博文(自 2006 年起),它RuntimeTypeHandle
是一个值类型 ( ,较重。struct
Type.GetTypeHandle(obj).Equals(anotherHandle)
obj.GetType().Equals(anotherType)
System.Type
但是,它也不太明显,并且肯定属于“微优化”类别,因此如果您想知道何时需要其中一个,您可能应该只使用 System.Type。
于 2008-09-02T19:28:14.047 回答
7
在 .NET 4.0 Beta 1中RuntimeTypeHandle
,仅包含RuntimeType
. 使用它作为廉价Type
代理的所有好处似乎都消失了。
上述主张的证据:
- Microsoft对该类型的参考源
System.RuntimeTypeHandle
表明,这种类型实际上只是近来的一个包装器System.RuntimeType
。 - Sandro Magi 的 2013 年博客文章“CLR:动态类型测试的成本”
包含一个基准测试和最后一条说明,表明
RuntimeTypeHandle
.NET 4 中没有所谓的性能优势。
于 2009-09-17T12:06:23.080 回答