C 資料型別

2021-06-21 10:11:14 字數 1023 閱讀 1902

值型別引用型別

變數存放的內容

實際值引用

預設值空

記憶體分配

分配在棧中

分配在堆中

記憶體**

作用域結束時,所佔空間自行釋放

使用完後不立即**,而是交給gc處理**

效率值型別效率高,不需要位址轉換

引用型別效率較低,需要進行位址轉換

賦值操作

建立乙個新物件

建立乙個引用

型別擴充套件

不易擴充套件,所有值型別都是密封(seal)的,所以無法派生出新的值型別

具有多型的特性,方便擴充套件 裝箱

拆箱概念

值型別→引用型別

裝箱是值型別到 object 型別或到此值型別所實現的任何介面型別的隱式轉換。

引用型別→值型別

拆箱從 object 型別到值型別或從介面型別到實現該介面的值型別的顯式轉換。

舉例//裝箱,將值型別轉換為引用型別。

int val= 100;

object obj= val;     //隱式轉換

console.writeline (「物件的值= ", obj);

//拆箱,將值型別轉換為引用型別,再由引用型別轉換為值型別的過程。

int val= 100;

object obj= val;

int num= (int) obj;   //顯式轉換

console.writeline ("num: ", num);

內部操作

1)首先從託管堆中為新生成的引用物件分配記憶體。

2)然後將值型別的資料拷貝到剛剛分配的記憶體中。

3)返回託管堆中新分配物件的位址。

1)首先獲取託管堆中屬於值型別那部分欄位的位址,這一步是嚴格意義上的拆箱。

2)將引用物件中的值拷貝到位於執行緒堆疊上的值型別例項中。

注:被裝過箱的物件才能被拆箱

C 資料型別

一般來說,計算機要儲存和處理不同的資料型別,在c 中有基本的資料型別和使用者自定義資料型別以及引用型資料。我們先學習下基本的資料型別,也就是系統自帶的資料型別。每種資料型別都要佔據系統記憶體的一定空間,例如c 中的整數int 乙個整數佔4個位元組,也就是32位 計算機是用0和1二進位制來表示和處理資...

c 資料型別

型別可分為 值型別,引用型別 值型別 直接存放真正的資料,值型別都有固定的長度,值型別的變數都儲存在 堆疊 stack 上。作為值型別的變數,每個都有自己的資料,因此對乙個變數的操作不會影響其他變數。引用型別 儲存讀資料的記憶體位址的引用,位於受管制的堆 heap 上作為引用型別的變數可以引 用同一...

C 資料型別

bool system.boolean 1位元組 byte system.byte 1位元組無符號 sbyte system.sbyte 1位元組有符號 short system.int16 2位元組 ushort system.uint16 2位元組 int system.int32 4位元組 u...