1、值型別直接儲存其值,而引用型別儲存對值的引用。
2、值型別儲存在堆疊中,而引用型別儲存在託管堆上。
3、在c#中,基本資料型別都是值型別
而大多數複雜的c#資料型別,包括我們自己宣告的類都是引用型別,它們分配在堆中,其生存期可以跨多個函式呼叫,可以通過乙個或幾個別名來訪問。
如果想把自己定義的型別定義為值型別,就應該把它們宣告為乙個結構。
進一步的說明:
對於值型別,當定義了乙個值型別的變數,把這個變數賦給另乙個變數的時候,記憶體會另外分配空間。
對於應用型別,當定義了乙個引用型別的變數,把這個變數賦給另乙個變數的時候,不會在分配新的記憶體空間,兩個變數指向同乙個記憶體空間。
上面這段**中,x和y都是vector類的引用變數,**中只有乙個vector物件,x和y都指向包含該物件的記憶體位置。
C 學習 關於值型別和引用型別
值型別 c 的基本型別 int long float char bool 結構 struct 列舉 enum 均繼承自system.valuetype,空間在棧內分配 引用型別 類 class自定義類 基類system.object string 委託 delegate關鍵字宣告的類 介面 inte...
C 值型別和引用型別
c 資料型別 值型別,引用型別 概念 值型別直接儲存其值,引用型別儲存對值的引用 這兩種型別儲存在記憶體的不同地方 值型別儲存在堆疊中,引用型別儲存在託管堆上。乙個引用型別的例子,如圖 上圖中,只有乙個user物件,u1和u2都指向包含該物件的記憶體位置 執行結果 在c 中,基本資料型別如bool和...
c 值型別和引用型別
今天我們來學習一下什麼是值型別和引用型別。1.值型別的值存在棧上,引用型別棧上存的是位址,值在堆上 2.將乙個值型別變數賦給另乙個值型別變數時,將複製包含的值。引用型別變數的賦值只複製對物件的引用,而不複製物件本身。3.裝箱是將值型別轉換為引用型別,拆箱是將引用型別轉換為值型別,利用裝箱和拆箱功能,...