关于堆、栈和数据类型的相关理解
2010-11-09 21:49
260 查看
其实一直以来,对于c#的初学者来说,数据类型和变量存储的相关知识一直是一件相当恼人的事情,经过一段时间的摸索,总结了以下几点。
一、数据的两种类型
包括值类型和引用类型,值类型的基类来自valueType(valueType继承自system.object),而引用类型的基类就是system.object;值类型在声明变量时是定义在栈上面的,也就是在拷贝值时会重新声明一个变量,并且在改变新的变量时不会影响原有的变量,而引用类型的变量是一个指针,指向它在堆中的实例,所以改变变量不会改变实例;
值类型删除时依据的是“先进后出”的原理,一旦离开作用域,内存会自动释放,而引用类型采用的是垃圾回收机制;值类型是密封的,所以它一般不能作为基类被继承,而引用类型是可以的;从值类型到引用类型是装箱,反之则为拆箱,所以值类型有两种状态:装箱和拆箱,而引用类型只有拆箱状态;
一、数据的两种类型
包括值类型和引用类型,值类型的基类来自valueType(valueType继承自system.object),而引用类型的基类就是system.object;值类型在声明变量时是定义在栈上面的,也就是在拷贝值时会重新声明一个变量,并且在改变新的变量时不会影响原有的变量,而引用类型的变量是一个指针,指向它在堆中的实例,所以改变变量不会改变实例;
值类型删除时依据的是“先进后出”的原理,一旦离开作用域,内存会自动释放,而引用类型采用的是垃圾回收机制;值类型是密封的,所以它一般不能作为基类被继承,而引用类型是可以的;从值类型到引用类型是装箱,反之则为拆箱,所以值类型有两种状态:装箱和拆箱,而引用类型只有拆箱状态;
相关文章推荐
- 关于uint8_t数据类型的理解
- 关于内存和指针操作,数据类型转换本质的理解
- 关于C#数据类型自己的理解
- java:关于short s1=1;s1=s1+1;short s1=1;s1+=1;short s3=s1+s2;中存在的简单数据类型转换问题的理解
- 关于JAVA中的基本数据类型的转换相关问题
- 关于物料主数据中MRP相关配置字段理解
- 关于double类型数据保留有效位的一些理解
- 关于数据类型取值范围相关问题
- 深入理解Java原始数据类型和包装类关于==和equals的比较
- 关于不同数据类型存储方式的的理解
- java:关于short s1=1;s1=s1+1;short s1=1;s1+=1;short s3=s1+s2;中存在的简单数据类型转换问题的理解
- 32/64bit总结及数据类型相关理解
- 关于java中数据类型知识的理解
- 关于内存和指针操作,数据类型转换本质的理解
- 关于js中数据类型的自我理解
- 关于物料主数据中MRP相关配置字段理解
- 关于内存和指针操作,数据类型转换本质的理解
- 关于错误:- ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BINARY
- SQL SERVER数据类型与C#数据类型的转换和相关.........
- 数据类型的分析理解