为什么ValueType是一个抽象类

时间:2015-05-05 01:55:11

标签: c# language-design

  

System.Object的 - > System.ValueType - >       System.Enum,       System.Int16,       System.Int32,       System.Int64 ...

ValueType是一个抽象类ValueType,但为什么Int16,Int32,Int64是struct?

另一个问题是为什么这些结构是从System.ValueType继承的,为什么不从对象类本身继承? 从我的研究中我只了解这一点,System.ValueType的作用是确保派生类型在堆栈上而不是垃圾收集堆上分配。

1 个答案:

答案 0 :(得分:1)

他们为什么会成为对象?重点是摆脱行李Object带来的东西(vtable,所有东西)并保持一个物体如此轻巧,你可以在需要的时候复制它。

像整数这样的基类型是值类型的主要候选者,因为它们适合寄存器并且很容易传递。

忘记堆和堆栈,他们不管C ++中的概念是什么,你现在正在使用C#。所有东西都存在于各种垃圾收集队列中(或寄存器中,特别是对于x64编译器)。