值类型如何像对象一样?

时间:2011-01-17 15:06:54

标签: .net

我已阅读Microsoft .NET Framework App Development工具包中的以下声明:

  

“即使价值类型经常   代表简单的价值观,他们仍然   作为对象“

任何人都可以帮我理解价值类型如何作为对象发挥作用吗?

SAJ

3 个答案:

答案 0 :(得分:5)

如果他们只是是你无法在他们身上调用成员函数的值(虽然幕后有一些魔法:(联合国)拳击)。

2.toString()有效(2为值类型),而您无法在其他语言中实现此功能,而您拥有C等实际值。

注意:C#中的article on value types摘录:尽管值类型通常表示简单值,但它们仍可用作对象。换句话说,您可以调用它们的方法。实际上,在将值显示为文本时,通常使用ToString方法。从基本的System.Object类型重写ToString。

答案 1 :(得分:2)

阅读this(装箱和拆箱)。

答案 2 :(得分:0)

对于Nullable&lt; T&gt;以外的每种值类型。系统定义从ValueType派生的相应类类型,该类型又派生自Object。如果需要将值类型的东西放入类类型存储位置,系统将隐式地将值类型转换为类类型。请注意,尽管编译器声称结果对象实例是值类型,但实例实际上将具有类类型语义。这对于实现接口的值类型来说非常重要(例如List<T>.Enumerator是实现IEnumerator<T>的结构体)。虽然约束中使用的接口既不是值类型也不是类类型,但接口类型的存储位置(变量,字段等)始终存储为类类型,存储在其中的对象实例表现为类类型实例。

相关问题