【发布时间】:2009-07-30 09:21:51
【问题描述】:
如果Value Types和Reference Type都来自Object Type,它是一个引用类型,那么值类型如何是值类型,而引用类型都来自于引用类型。
【问题讨论】:
如果Value Types和Reference Type都来自Object Type,它是一个引用类型,那么值类型如何是值类型,而引用类型都来自于引用类型。
【问题讨论】:
基本上是作弊;-p
任何struct(即从ValueType 继承的任何东西)都使用值类型语义处理。但是有必要进行装箱转换到object;这意味着如果您将 struct 转换为 object,它将创建一个特殊对象(在托管堆上),其中包含来自您的值的数据(作为克隆)*。
盒装版本是引用类型。您可以将其拆箱(通过强制转换)回到 struct 版本,这将反转此(将克隆数据从堆上的对象复制到您的本地值)。
*=除非它是一个空的Nullable<T>,它会框到null;同样,null 拆箱为空的Nullable<T>。
【讨论】:
ValueType 派生的,并以不同的方式对待它......除此之外? ECMA335