C#值类型和引用类型

来源:互联网 发布:录音软件app 编辑:程序博客网 时间:2024/05/16 12:23

所有的数据在C#中都可以最为两种基本数据类型:值类型和引用类型。

什么是值类型呢,值类型数据存储在内存的栈中,可以提供快速访问。如果变量是值类型的,如果变是理企类型的,这个变量就包含实际数据,在一个内存区域保存自己的值。如果在代码中修改其值后,在内存中会保存修改的值。C#的整型,字符型,浮点型,布尔型等都属于值类型。结构,枚举也属于值类型。

引用类型指向存储在内存堆中的数据的指针和引用。引用类型总是指向一个对象,而且这个对象具有指定的类型,并且在堆上分配了地址。字符串,数组,接口,类,委托都属于引用类型。

值类型和引用类型的区别

1. 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。

2. 值类型存取速度快,引用类型存取速度慢。

3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用

4. 值类型继承自System.ValueType,引用类型继承自System.Object

5. 栈的内存分配是使用完自动释放;而引用类型使用完不立即回收,等待垃圾回收器回收。