值类型:值类型是从System.ValueType类继承而来的类型,主要包括数值型,布尔型,结构和枚举。值类型变量直接存储数据值。值类型在堆栈中分配,因此效率高,使用值类型主要目的是为了提高性能!
值类型特性:
值类型变量都存储在堆栈中
访问值类型变量时,一般直接访问其实例
每个值类型变量都有自己的数据副本,因此对一个值类型变量进行操作不会影响其他变量
复制值类型变量时,复制的是变量的值,而不是变量的地址
值类型变量不能为NULL值,必须有一个确定的值
引用类型:引用类型主要用于构建c#应用程序对象类型数据,通过new关键字可以创建对象实例,对象实例存储在堆中
引用类型特征:
必须在托管堆中为引用类型变量分配内存
引用类型被赋值前的值都是NULL
多个引用类型变量可以同时引用一个对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一个对象
必须使用new关键字使用引用类型变量
引用类型变量是由垃圾回收机制来管理的
在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化
eg:声明引用类型的变量
object o = new object(); //定义object类型 string str = "这是一个字符串"; //string类型是引用类型
所有被称为“类”的都是引用类型,主要包括接口,类,数组和委托
值类型和引用类型的区别:
值类型继承于System.ValueType类,其他类型则为引用类型
值类型的对象分配在栈上,而引用类型却分配在堆栈中
在赋值时,值类型的变量将得到一个真实的数据副本,而对于引用类型仅仅是把对象的引用赋给变量,这就导致了多个变量引用同一个对象实例
初学者,如有错误,请指教!
原文:http://www.cnblogs.com/hope98/p/4365922.html