目录
知识点
一、定义
值类型:通过变量直接存储数据
例如:byte, int, short, long, float, double, char, bool,struct等等
引用类型:变量持有的是数据的引用,而数据存在堆中
类型 类别 派生源 引用类型 数组 System.Array 类(class) System.Object 接口(interface) / 委托(delegate) System.Delegate object System.Object 字符串(string) System.String
二、区别
角度 | 区别 |
存储内存 | 值类型的数据存储在内的存栈中,引用类型的数据存储在内存的堆中,而内存单元只存放堆中对象的地址 |
存取速度 | 值类型的存取速度快,引用类型的存取速度慢 |
存储数据 | 值类型表示实际数据,引用类型表示的是指向存储在内存堆中的数据的指针或引用 |
派生类别 | 值类型继承自System.ValueType,引用类型继承自System.Object |
内存回收 | 栈的内存分配由系统自动回收,而堆在.Net中由GC释放 |
(*与存储数据类似) | 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用 |
(*与存储内存类似) | 值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中 |