C#里把数据类型分为两大类,值类型和引用类型
值类型
值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会根据声明的类型,以栈的方式分配存储区给这个变量,变量的读写操作就直接在这块区域进行
值类型包括 :基本数据类型(int double 等),结构,枚举
引用类型
一个引用类型的变量,不存储他们所代表的真实数据,而是存储真实数据的引用。引用类型分两步创建,1,首先在栈上创建引用变量,然后在堆上创建对象本身,再把这个内存的句柄(内存的地址)赋给引用变量
引用类型包括:接口,数组,Object类型,类,委托,字符串,Null类型
总结
1.值类型存储在内存的栈中,引用类型存储在内存的堆中
2.值类型存取速度快,引用类型存取速度慢
3.值类型表示实际的数据,引用类型表示指向内存堆中的指针或者引用
4.值类型继承自System.ValueType,引用类型继承自System.Object
5.栈的内存分配自动释放;而堆在C#中需要GC释放