C 中引用型別和 值型別

2021-07-05 21:46:34 字數 612 閱讀 8254

值型別:儲存在棧(stack)中,乙個值型別的變數其實是乙個記憶體位址,位址中儲存的就是值本身;包括c#的基本型別(用關鍵字int、char、float等來宣告),結構(用struct關鍵字宣告的型別),列舉(用enum關鍵字宣告的型別。

引用型別: 儲存在堆(heap)中,乙個引用型別的變數的值是乙個指標,指向儲存物件的記憶體處;它共享乙份資料,修改了引用型別的資料值,引用該位址的變數值也就都發生變化,);包括類(用class關鍵字宣告的型別)和委託(用delegate關鍵字宣告的特殊類)。

在c#中,變數是值還是引用僅取決於其資料型別。c#的值型別包括:結構體(數值型別、bool型、使用者定義的結構體),列舉,可空型別。c#的引用型別包括:陣列,使用者定義的類、介面、委託,object,字串。陣列的元素,不管是引用型別還是值型別,都儲存在託管堆上。

引用型別在棧中儲存乙個引用,其實際的儲存位置位於託管堆。簡稱引用型別部署在託管推上。值型別總是分配在它宣告的地方:作為欄位時,跟隨其所屬的變數(實 例)儲存;作為區域性變數時,儲存在棧上。值型別在記憶體管理方面具有更好的效率,並且不支援多型,適合用做儲存資料的載體;引用型別支援多型,適合用於定義應用程式的行為。

C 中引用型別和值型別

c 的值型別包括 結構體 數值型別,bool型,使用者定義的結構體 列舉,可空型別。c 的引用型別包括 陣列,使用者定義的類 介面 委託,object,字串。值型別和引用型別的區別在於,值型別的變數直接存放實際的資料,而引用型別的變數存放的則是資料的位址,即物件的引用。值型別變數直接把變數的值儲存在...

C 中引用型別和值型別

c 的值型別包括 結構體 數值型別,bool型,使用者定義的結構體 列舉,可空型別。c 的引用型別包括 陣列,使用者定義的類 介面 委託,object,字串。值型別和引用型別的區別在於,值型別的變數直接存放實際的資料,而引用型別的變數存放的則是資料的位址,即物件的引用。值型別變數直接把變數的值儲存在...

C 值型別和引用型別

c 資料型別 值型別,引用型別 概念 值型別直接儲存其值,引用型別儲存對值的引用 這兩種型別儲存在記憶體的不同地方 值型別儲存在堆疊中,引用型別儲存在託管堆上。乙個引用型別的例子,如圖 上圖中,只有乙個user物件,u1和u2都指向包含該物件的記憶體位置 執行結果 在c 中,基本資料型別如bool和...