使用引用类型时,必须考虑以下事实:
- 内存必须从托管堆上分配
- 堆上分配的每个对象都会有一些额外的成员,这些成员必须初始化
- 对象中的其他的字节总是设为0
- 从托管堆上分配一个对象时,可能强制执行一次垃圾回收集操作。
值类型是轻量级的类型,使用值类型缓解了托管堆中的压力
- 值类型派生自ValueType(隐式派生)。
- 结构体派生自ValueType,枚举类型派生自Enum。而Enum又派生自ValueType。
- 值类型存储在栈上,而引用类型存储在托管堆上。(引用类型中也会有值类型,此时的值类型是在托管堆上的)
- 值类型一般就是值本身,并不是和引用类型一样(引用类型内会有指针,指向对象实例)
值类型和引用类型的比较:
- 值类型有未装箱和已装箱两种形式,引用类型都是已装箱的形式。