C#值类型与引用类型区别
2014-04-11 17:20 hduhans 阅读(371) 评论(0) 编辑 收藏 举报值类型是只由实际值表示的数据类型,引用类型是只由实际值引用(类似指针)表示的数据类型。
1、值类型与引用类型的区别:
1) 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的;
2) 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是内存堆中数据的地址,即对象的引用;
3) 值类型继承自System.ValueType,引用类型继承自System.Object;
4) 栈的内存分配是自动释放;而堆在.NET中会有GC来释放;
5) 值类型存取速度快,引用类型存取速度慢;
6) 值变量赋值时,会在栈中保存两个完全相同的值,改变值独立;引用变量赋值时,会拷贝对相同对象的同一个引用,改变变量值实际是改变堆地址对象中的值,会影响另一个引用变量值;
2、内存堆和栈的区别,堆一般用户存储可变长度的数据,如字符串类型;而栈用于存储固定长度的数据,如整型int。