標籤:副本 image 成員 自己 類型 姓名 ack 執行個體 引用
一、概述
C# 的類型系統是統一的,因此任何類型的值都可以按對象處理。C# 中的每個類型直接或間接地從 object 類類型派生,而 object 是所有類型的最終基類。C#的資料類型主要分為三類:實值型別、參考型別和指標類型(如所示)。另外,指標類型只能用在不安全的程式碼中,本文就不做進一步的探討。
實值型別與參考型別的不同之處在於:實值型別的變數直接包含其資料,而參考型別的變數儲存對其資料的引用,後者稱為對象(object)。對於參考型別,兩個變數可能引用同一個對象,因此對一個變數的操作可能影響另一個變數所引用的對象。對於實值型別,每個變數都有自己的資料副本,對一個變數的操作不可能影響另外一個 變數。
二、實值型別
所有實值型別都隱式聲明了一個稱為預設建構函式的公用無參數執行個體建構函式。預設建構函式返回一個零初始化執行個體,它就是該實值型別的預設值。
1、簡單類型
C#提供稱為簡單類型的預定義結構類型集。簡單類型通過保留字標識,而這些保留字只是System命名空間中預定義結構類型的別名。這裡只是介紹一下常用的幾種簡單類型:
int用來定義整數,在編程最常用的資料類型,例如數量、年齡等等。
float單精確度浮點型,可表示精度為7位。
double雙精確度浮點型,可表示精度為15-16位。
decimal小數型是128位的資料類型,適合用於財務計算和貨幣計算。decimal類型可以表示具有28或29個有效數字。
bool類型表示布爾邏輯量。bool 類型的可能值為true和false。
char類型是字串(string)的構成單元,比如code這個字串是由c,o,d,e 4個字元組成的。
2、結構類型(struct)
結構類型是一種實值型別,它可以聲明常量、欄位、方法、屬性、索引器、運算子、執行個體建構函式、靜態建構函式和巢狀型別。
3、枚舉類型(enum)
枚舉類型是具有命名常量的獨特的類型。每個枚舉類型都有一個基礎類型,該基礎類型必須為 byte、sbyte、short、ushort、int、uint、long或ulong。枚舉類型的值集和它的基礎類型的值集相同。枚舉值主要為了限定變數的取值範圍。
三、參考型別
1、類類型
類類型定義包含資料成員、函數成員和巢狀型別的資料結構,其中資料成員包括常量和欄位,函數成員包括方法、屬性、事件、索引器、運算子、執行個體建構函式、解構函式和靜態建構函式。類類型支援繼承,繼承是衍生類別可用來擴充和專門化基類的一種機制。
string 類型是直接從object繼承的密封類類型,用來表示一段文本,比如姓名,單位這樣的資訊。
2、介面類型
一個介面定義一個協定。實現某介面的類或結構必須遵守該介面定義的協定。一個介面可以從多個基底介面繼承,而一個類或結構可以實現多個介面。
3、數群組類型
數組是一種資料結構,它包含可通過計算索引訪問的零個或更多個變數。數組中包含的變數(又稱數組的元素)具有相同的類型,該類型稱為數組的元素類型。
4、委託類型
委託是引用一個或多個方法的資料結構。對於執行個體方法,委託還可引用執行個體方法對應的對象執行個體。
在 C 或 C++ 中與委託最接近的是函數指標,但函數指標只能引用靜態函數,而委託則既可以引用靜態方法,也可以引用執行個體方法。在後一種情況中,委託不僅儲存了一個對該方法進入點的引用,還儲存了一個對相應的對象執行個體的引用,該方法就是通過此對象執行個體被調用的。
C#的基礎資料類型