如果值类型和引用类型来自作为引用类型的对象类型,那么值类型是值类型,引用类型是引用类型时引用的类型。
答案 0 :(得分:12)
基本上,这是一个骗子;-p
任何struct
(即从ValueType
继承的任何内容)都将使用值类型语义进行处理。但必要时会有{strong>拳击转换到object
;这意味着如果将struct
强制转换为object
,它将在您的值*中创建一个包含数据(作为克隆)的特殊对象(在托管堆上)。
盒装版本是引用类型。您可以将此(通过强制转换)取消装回struct
版本,这样可以将其反转(将堆中对象的克隆数据复制到本地值)。
* =除非它是空的Nullable<T>
,其中的框为null
;同样,null
取消装入空Nullable<T>
。