[C#, CSharp] 通用型別系統(Common Type System, CTS)
通用型別系統(Common Type System, CTS)
- 通用型別系統(Common Type System)定義型別在執行時期(Runtime)如何宣告、使用及管理
- 在執行時期提供跨語言整合(Cross-Language Integration)的功能
- 所有的型別都是由基底型別(Base Type) System.Object所衍生
- C#的型別實際上都定義在.net framework中,以別名(Alias)的方式來對應
- 型別可分為實值型別(Value Type)與參考型別(Reference Type)
- 數值型別
- 數值型別的變數會直接儲存資料
- 資料存放在堆疊(Stack)中或直接嵌在程式碼中(inline)
- 將A數值型別指派給B數值型別時,會複製一份資料,所以在記憶體中會有2份資料
- 實值型別不可存放null值,除非宣告時在型別關鍵字後面加上?,表示其為Nullable
- 參考型別
- 參考型別的變數儲存資料的參考
- 即資料是存放在Heap中,變數只存放資料在Heap中的位址
- 將A數值型別指派給B數值型別時,只會將A記錄的位址(參考)複製給B,所以記憶體中依然只有一份資料
- 數值型別
C#型別與.Net Framework型別對應表 | ||
---|---|---|
C#型別 | .Net Framework型別 | 說明 |
byte | System.Btye | 8 位元不帶正負號的整數 |
♠ sbyte | System.SBtye | 8 位元帶正負號的整數 |
short | System.Int16 | 16 位元帶正負號的整數 |
int | System.Int32 | 32 位元帶正負號的整數 |
long | System.Int64 | 64 位元帶正負號的整數 |
♠ ushort | System.UInt16 | 16 位元不帶正負號的整數 |
♠ uint | System.UInt32 | 32 位元不帶正負號的整數 |
♠ ulong | System.UInt64 | 64 位元不帶正負號的整數 |
float | System.Single | 單精度 (32 位元) 浮點數 |
double | System.Double | 雙精度 (64 位元) 浮點數 |
bool | System.Boolean | 布林值 (true 或 false) |
char | System.Char | Unicode (16 位元) 字元 |
decimal | System.Decimal | 96 位元十進位值 |
string | System.String | Unicode 字元,為不變且長度固定的字串 |
註:型別前面有♠符號者,表示非CLS相容
Δ 回到最上方