關於數據類型 c#的類型通常分爲值類型和引用類型兩種,c#
值類型的變量包含類型的實例,值類型存放棧中ui
引用類型的變量包含對類型實例的引用,引用類型放在堆中,在棧中設置一個指針指向堆spa
值類型:指針
1.整數型數值:全部的整型數值類型均爲值類型,能夠用文本進行初始化,每一個整型類型的默認值都是0,c#支持如下預約義的整型數值類型code
sbyte 8位帶符號整數,對象
byte 8位無符號整數,繼承
short 16位帶符號整數ci
ushort 16位無符號整數字符串
int 32位帶符號整數string
uint 32位無符號整數
long 64位帶符號整數
ulong 64位無符號整數
2.浮點型數值:全部浮點型數值均爲值類型 ,能夠使用文本進行初始化,每一個整型類型的默認值都是0,c#支持如下預約義的浮點型數值類型
float 大約6-9位數字 4個字節
double 大約15-17位數字 8個字節
decimal 大約28-29位數字 16個字節
3.bool類型,它是一個布爾值,可爲true和false
4.char類型,默認值是\0,即U+0000
5.enum 枚舉類型,它是由整型數值類型的一組命名常量定義的值類型,枚舉成員的關聯常數值爲int,從0開始,並按定義文本順序遞增1
6.結構類型 (stuct type;stucture type)是一種可封裝數據和相關功能的值類型
7.可爲空的值類型 ,T?表示其基礎值類型T的全部值及額外的null 值。
引用類型:
1.內置引用類型
1.1:動態類型 dynamic ,表示變量的使用和對其成員的引用繞過編譯時類型檢查
1.2:對象類型 object,c#的統一類型系統中,全部的類型都是直接或間接從System.Object 繼承的。
1.3:字符串類型 string ,表示0個或多個Unicode字符的序列。
1.4:委託類型 delegate 聲明和方法簽名類似
2.引用類型能夠使用如下進行聲明
2.1: class
2.2:Interface
2.3:可爲null的引用類型
類型之間能夠經過某種手段轉換成另外一種類型
類型轉換分爲
1.默認類型轉換 無符號和有符號之間轉換時,若是無符號的位數和有符號之間位數一致的話不能默認轉換,全部整型都可默認轉換爲decimal
1.1 子類轉換成父類時
1.2 短精度向高精度轉換時(列:byte->int->long->float->double)
2.強制類型轉換 數據類型判斷 關鍵字 is,此關鍵字能夠檢測下是否能夠轉換爲目標類型,
2.1 變量前加目標類型進行強制轉換 失敗時會拋錯
2.2 使用as 關鍵字進行強制轉換 失敗時會設置爲null