理解棧 堆 值型別 引用型別 裝箱和拆箱

2022-03-04 05:33:49 字數 439 閱讀 8462

.net中有2種可分配的記憶體型別:棧和堆

.net基元資料型別是指編譯器直接支援的資料型別

.net定義乙個變數,系統會為其分配一塊記憶體塊,包括:變數名稱、資料型別、變數值

當乙個值型別的變數賦值給另乙個值型別變數時,實際上是建立乙個值的副本,值的變化在變數間互不影響。引用型別變數的值為資料值的引用,值變化實際為同一資料值的變化,兩個變數引用同一數值,故變數值更改相互有影響。

.net中變數儲存到棧或堆上取決於資料型別,引用型別(object 和 string)儲存於堆中,值型別儲存於棧中

當乙個方法體值行完畢時,棧中變數會根據後進先出規則逐一釋放,引用型別堆中實際儲存內容由垃圾**器負責**。

參考:

堆和棧 值型別和引用型別 拆箱和裝箱

當你在乙個.net應用程式中宣告乙個變數時,手想要分配一些記憶體塊到ram,它包括三樣東西,變數名 資料型別 變數的值。根據變數的型別不同,有兩種記憶體分配型別 堆疊記憶體和堆記憶體。明確資料大小或是是否存在動態變化,是變數分配到堆還是堆疊的依據 定 堆疊,不定 堆。資料從值型別一道引用型別 裝箱,...

值型別 引用型別,裝箱 拆箱

值型別 宣告乙個值型別變數,會在棧上分配乙個空間,空間裡儲存的就是變數的值 引用型別 宣告乙個引用型別變數,會在棧中分配乙個空間,儲存乙個引用,這個引用指向了乙個託管堆。值型別 struct,列舉,數值型別,bool型別 引用型別 陣列,類,介面,委託 delegate object,string ...

值型別和引用型別,裝箱和拆箱

c 中任何型別都是隱式繼承自 system.object 引用型別 分為兩大類,值型別和引用型別。值型別包括 簡單型別 int,float,double等 結構體,列舉 引用型別包括 自定義的類,字串,介面,陣列 區別 1.值型別儲存在棧中,自動釋放,比較高效 引用型別儲存在堆中,需要手動釋放 2....