由于C#中所有数据类型都是基类System.Object继承而来,所以值类型和引用类型的值可以通过显示(或隐式)操作相互转换,而这转换的过程也就是装箱(boxing)和拆箱(unboxing)的过程。
一、值类型:
值类型是在栈中分配内存。值类型的数据值存储在内存的堆栈上,从内存的堆栈中可以快速访问这些数据值。
值类型超出作用范围,系统自动释放内存。垃圾回收机制不参与回收。
将一个值类型变量的内容赋值给另一个值类型的变量时,变量值被拷贝。
主要由两类组成:结构和枚举,结构分为以下几类:
二、引用类型:
引用类型在堆中分配内存,初始化时默认为null。在栈中保存指向堆中分配内存的地址,操作时通过栈中的指针寻找
引用类型通过垃圾回收装置进行回收