我已阅读Microsoft .NET Framework App Development工具包中的以下声明:
“即使价值类型经常 代表简单的价值观,他们仍然 作为对象“
任何人都可以帮我理解价值类型如何作为对象发挥作用吗?
SAJ
答案 0 :(得分:5)
如果他们只是是你无法在他们身上调用成员函数的值(虽然幕后有一些魔法:(联合国)拳击)。
2.toString()
有效(2为值类型),而您无法在其他语言中实现此功能,而您拥有C等实际值。
注意:C#中的article on value types。 摘录:尽管值类型通常表示简单值,但它们仍可用作对象。换句话说,您可以调用它们的方法。实际上,在将值显示为文本时,通常使用ToString方法。从基本的System.Object类型重写ToString。
答案 1 :(得分:2)
阅读this(装箱和拆箱)。
答案 2 :(得分:0)
对于Nullable< T>以外的每种值类型。系统定义从ValueType
派生的相应类类型,该类型又派生自Object
。如果需要将值类型的东西放入类类型存储位置,系统将隐式地将值类型转换为类类型。请注意,尽管编译器声称结果对象实例是值类型,但实例实际上将具有类类型语义。这对于实现接口的值类型来说非常重要(例如List<T>.Enumerator
是实现IEnumerator<T>
的结构体)。虽然约束中使用的接口既不是值类型也不是类类型,但接口类型的存储位置(变量,字段等)始终存储为类类型,存储在其中的对象实例表现为类类型实例。