【问题标题】:Whats the difference between RuntimeTypeHandle and Type?RuntimeTypeHandle 和 Type 有什么区别?
【发布时间】:2008-09-02 19:20:08
【问题描述】:

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

【问题讨论】:

    标签: c# .net reflection


    【解决方案1】:

    注意:这个答案似乎已经过时了。它是在 .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。

    【讨论】:

    • 我认为 GetType() 不会创建新实例。
    【解决方案2】:

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

    上述主张的证据:

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多