System.Object的 - > System.ValueType - > System.Enum, System.Int16, System.Int32, System.Int64 ...
ValueType是一个抽象类ValueType,但为什么Int16,Int32,Int64是struct?
另一个问题是为什么这些结构是从System.ValueType继承的,为什么不从对象类本身继承? 从我的研究中我只了解这一点,System.ValueType的作用是确保派生类型在堆栈上而不是垃圾收集堆上分配。
答案 0 :(得分:1)
他们为什么会成为对象?重点是摆脱行李Object
带来的东西(vtable,所有东西)并保持一个物体如此轻巧,你可以在需要的时候复制它。
像整数这样的基类型是值类型的主要候选者,因为它们适合寄存器并且很容易传递。
忘记堆和堆栈,他们不管C ++中的概念是什么,你现在正在使用C#。所有东西都存在于各种垃圾收集队列中(或寄存器中,特别是对于x64编译器)。