【发布时间】:2011-10-24 16:20:15
【问题描述】:
如果值类型是对象(我已经看到 ValueType 确实继承自 Object),为什么它们不表现为对象?它们不能为空,因此它们似乎没有参考,并且它们必须被装箱/拆箱。当作为参数传递时,它们的行为类似于原语,但由于您可以在它们上调用方法,它们似乎也表现为引用类型。我读到它们通常分配在堆栈上,这使它们再次看起来像值类型。就装箱而言,我没有看到 int 和 Integer 的 Java 等价物,只有 Int32 结构,所以如果 Int32 被装箱,它被装箱到什么中?
简而言之,如果有人能解决他们似乎站在一个世界的一半,另一个世界的一半,我当然会很感激。
【问题讨论】:
-
您需要重新调整您的期望。你似乎相信如果某物是一个对象,它一定是可以为空的。这是你的问题。一个对象没有理由必须可以为空。
-
为什么你认为应该有一个等价于Java的int和Integer?这可能是 Java 语言最愚蠢的设计决策之一!
标签: .net value-type reference-type