C#有兩種類型:值類型和引用類型。值類型的變量直接包含數據,引用類型的變量則包含對變量(對象)的引用。對於引用類型,兩個變量能夠引用同一個對象,因此,對一個變量的操做可能會影響另外一個變量引用的對象。而對於值類型,每一個變量都有本身的數據副本,所以,對一個變量的操做不會影響到另外一個變量(ref和out參數變量除外)。數組
1、值類型數據結構
C#中值類型分爲簡單類型、枚舉類型、結構類型和能夠爲null的值類型。函數
- 簡單類型
- 有符號的整形:sbyte,short,int,long.
- 無符號的整形:byte,ushort,uint,ulong
- Unicode字符:char,表示一個UTF-16字符
- IEEE二進制浮點數:float,double
- 高精度十進制浮點數:decimal
- 布爾類型:bool,用於表示布爾值(true和false)
- 枚舉類型
- 結構類型
- 格式爲
的用戶定義類型,struct類型定義了包含數據成員和函數成員的數據結構,與類類型類似,但結構類型是值類型,存儲在棧上,沒法被繼承,而且全部結構類型均隱式繼承自 object 類型
- 能夠爲null的值類型
- 元組值類型
2、引用類型ui
C#中引用類型分爲類類型、接口類型、數組類型和委託類型spa
- 類類型
- 其餘全部類型的最終基類:object
- Unicode字符串:string,表示一個UTF-16字符串
- 格式爲
class TestClass
{
//方法、屬性、字段、事件、委託
//和嵌套類
}
的用戶定義類型,class 類型定義了包含數據成員(字段)和函數成員(方法、屬性等)的數據結構,一個類類型只能繼承一個基類,但一個類能實現多個接口。
- 接口類型
- 格式爲
的用戶定義類型,定義了全部類繼承接口時應遵循的語法協議。包含了屬性、方法和事件的聲明,這些接口成員的定義(代碼實現)必須由實現接口的類或結構完成。接口能夠繼承自多個基接口,類和結構能夠實現多個接口。
- 數組類型
- 委託類型
- 格式爲
的用戶定義類型,表示對具備特定參數列表和返回類型的方法的引用。