您的位置:首页 > 其它

关于堆、栈和数据类型的相关理解

2010-11-09 21:49 260 查看
其实一直以来,对于c#的初学者来说,数据类型和变量存储的相关知识一直是一件相当恼人的事情,经过一段时间的摸索,总结了以下几点。

一、数据的两种类型

   包括值类型和引用类型,值类型的基类来自valueType(valueType继承自system.object),而引用类型的基类就是system.object;值类型在声明变量时是定义在栈上面的,也就是在拷贝值时会重新声明一个变量,并且在改变新的变量时不会影响原有的变量,而引用类型的变量是一个指针,指向它在堆中的实例,所以改变变量不会改变实例;

值类型删除时依据的是“先进后出”的原理,一旦离开作用域,内存会自动释放,而引用类型采用的是垃圾回收机制;值类型是密封的,所以它一般不能作为基类被继承,而引用类型是可以的;从值类型到引用类型是装箱,反之则为拆箱,所以值类型有两种状态:装箱和拆箱,而引用类型只有拆箱状态;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: