广义上说,C#(及所有.NET语言)只分为值类型和引用类型,值类型就是定义好以后,默认为各类型的初始值(如int为0)对它的每次引用赋值都会新建一个副本。而引用类型定义好以后,默认为null,要初始化后才能用,并且对它的引用赋值不会新建副本。
比较下面:
int a=0; int b=a; b=5;
这种情况,a不会变成5,因为int是值类型。
Hashtable a, b;a[0]=0; b=a; b[0]=4;
这种情况下a[0]会变成4,因为Hashtable是引用类型。
一、值类型(基本值类型,结构值类型,枚举值类型)
包括简单值类型和复合型类型。
简单值类型可以再细分为整数类型、字符类型、实数类型和布尔类型;
而复合类型则是简单类型的复合,包括结构(struct)类型和枚举(enum)类型。
二、引用类型(类类型,数组类型,接口类型,委托类型)
包括类(class)、接口(interface)、委托(delegate)和数组(array)。
类(class)是一组具有相同数据结构和相同操作的对象集合。
接口(interface)应用程序之间要相互调用,就必须事先达成一个协议,被调用的一方在协议中对自己所能提供的服务进行描述。在C#中,这个协议就是接口。
委托(delegate)用于封装某个方法的调用过程。
数组(array)主要用于同一数据类型的数据进行批量处理。