廣義上說,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)主要用于同一數據類型的數據進行批量處理。