天天看點

C#程式設計基礎——資料類型

目錄

值類型

引用類型

值類型與引用類型的關系

 差別

“裝箱”和“拆箱”

      C#語言是一種強類型語言,在程式中用到的變量、表達式和數值等都必須有類型。在C#中,資料類型分為兩大類:一類是值類型、一類是引用類型。

值類型

所謂值類型就是包含一個實際資料的量。當定義一個值類型的變量是,C#會根據他所聲明的類型,以堆棧方式配置設定一塊大小相适應的存儲區域給這個變量,随後對這個變量的讀寫操作就直接在這塊記憶體區域進行。

C#中的值類型包括:簡單類型、枚舉類型和結構類型。廢話不多說,一張表勝過千言萬語。

類别 描述
值類型 基本資料類型 整型:int 
長整形:long
浮點型:float
字元型:char
布爾型:bool
枚舉類型 枚舉:enum
結構類型 結構:struct

引用類型

一個引用類型的變量不存儲它們所代表的實際資料,而是存儲實際資料的引用。引用類型包括類、接口、數組、object、string 。直接上圖。

注:object是C#中所有類型的根類,string類型是一個從object類直接繼承的密封類型。

類别 描述
引用類型 基類:System.Object
字元串:string
自定義類:class
接口 接口:interface
數組 數組:int[],string[]

值類型與引用類型的關系

差別

一、将一個值類型變量賦給另一個值變量類型時,将複制包含的值。引用類型變量的指派隻複制對對象的引用,而不複制對象本身。

二、C#中,值類型就配置設定在堆棧中,堆棧記憶體區域内儲存着值類型的值,記憶體區域可以通過變量名來存取。引用類型配置設定在堆中,對象配置設定在堆時,傳回的是位址,這個位址被指派給引用。

(感覺跟VB中按值傳遞和按址傳遞有點類似,隻是感覺,具體如何接下來還得查)

三、值類型不可能派生出新的類型,值類型不可能包含null值。

“裝箱”和“拆箱”

C#中用“裝箱”和“拆箱”類實作值類型與引用類型之間的轉換。

一、“裝箱”就是将值類型包裝成引用類型的處理過程。

C#程式設計基礎——資料類型

二、“拆箱”它是将一個object類型轉換成值類型。

C#程式設計基礎——資料類型