目錄
一、概念
二、資料型別
三、二者的比較
四、二者的聯絡
補充:值型別:直接儲存值,在棧上儲存其值
值型別引用型別
**繼承自system.valuetype
繼承自system.object
用途表示實際資料
表示指向儲存在記憶體堆中的資料的指標或引用
資料儲存位置
儲存在記憶體的棧中
儲存在記憶體的堆中,而記憶體單元中只存放堆中物件的位址
變數存放的型別
直接存放實際的資料
存放資料的位址,即物件的引用
儲存位置上
變數直接把變數的值儲存在堆疊中
變數把實際資料的位址儲存在堆疊中,把實際資料則儲存在堆中
繼承性密封的,不能作為其他任何型別的基類,可以單繼承或多繼承介面
一般都具有繼承性
變數值不可為null,值型別都會自動初始化為0值
預設情況下,建立為null值,表示指向任何託管堆的引用位址。對值為null的引用型別的操作,都會丟擲nullreferenceexception異常
值型別和引用型別能夠互相轉換,即為裝箱和拆箱操作:
裝箱在值型別向引用型別轉換時發生,將乙個資料項(副本)從棧中自動複製到堆中的行為。
int i = 8;
object o = i; // 裝箱 // 首先在堆中開闢出一片區域,再將 i 的乙個副本放在該區域中。
// 所有引用都必須引用堆上的物件
拆箱在引用型別向值型別轉換時發生,將乙個資料項(副本)從堆中自動複製到棧中的行為。
int i = 8;
object o = i; // 裝箱
i = (int)o; // 拆箱 // 此處使用強制型別轉換(cast)
託管堆:是clr(公共語言資料庫)中自動記憶體管理的基礎。初始化新程序時,執行時會為程序保留乙個連續的位址空間區域,這個保留的位址空間被稱為託管堆。 C 值型別和引用型別
c 資料型別 值型別,引用型別 概念 值型別直接儲存其值,引用型別儲存對值的引用 這兩種型別儲存在記憶體的不同地方 值型別儲存在堆疊中,引用型別儲存在託管堆上。乙個引用型別的例子,如圖 上圖中,只有乙個user物件,u1和u2都指向包含該物件的記憶體位置 執行結果 在c 中,基本資料型別如bool和...
c 值型別和引用型別
今天我們來學習一下什麼是值型別和引用型別。1.值型別的值存在棧上,引用型別棧上存的是位址,值在堆上 2.將乙個值型別變數賦給另乙個值型別變數時,將複製包含的值。引用型別變數的賦值只複製對物件的引用,而不複製物件本身。3.裝箱是將值型別轉換為引用型別,拆箱是將引用型別轉換為值型別,利用裝箱和拆箱功能,...
C 值型別和引用型別
型別被分為兩種 值型別 整數,bool,struct 建構函式 char 字元 小數 引用型別 string 陣列 自定義的類,內建的類,物件.兩者在記憶體中的儲存方式 值型別 只需要一段單獨的記憶體,用於儲存實際的資料,單獨定義的時候放在棧中 引用型別 需要兩段記憶體 第一段儲存實際的資料,它總是...