值类型与引用类型
在我之前的两篇博文里介绍了这两种类型。
值类型分为:简单值类型、枚举、结构。(下面用蓝色字标识)
引用类型分为:类、委托、接口、字符串、对象、数组。(下面用红色字标识)
下面来谈谈这两种类型的区别:
★1.继承的基类不同
System.ValueType System.Object
★2.数据存在于
栈 数据存在于堆里,然而地址存在栈里
★3.用null赋值?
不可以 可以
4.垃圾回收
自动回收 垃圾回收器(Garbage Collector)
5.占用内存量
少 多
6.执行速度
快 慢
7.数据长度
固定 不固定
看完了区别,接下来整理一下两种类型间的转换。
装箱:
值类型转成引用类型。
又称隐式转换。
例如:
int i = 0;
object j = null;
j = i as object;
拆箱:
引用类型转成值类型。
又称显式转换。
例如:
double a;
object b = 12345.15;
a = (double)b;