首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++/CLI:最強大的 .NET 語言之裝箱與拆箱

     編輯:VC 教學

值類型與參考類型的差異在於:值類型直接包含數值,參考類型含物件標頭(虛方法表、同步索引等),記憶體開銷大。CLR 提供裝箱機制橋接兩者。

裝箱原理

  1. 值透過 ldloc 入堆疊。
  2. box IL 指令配置物件空間,複製值並加上物件標頭。
  3. 新物件參考壓入堆疊,stloc 存入區域變數。

語言層面的隱式 vs 顯式

  • C#:隱式裝箱 object o = 123;
  • 託管 C++:顯式 __box 關鍵字 Object* o = __box(123);
  • C++/CLI:採隱式裝箱,但保留強型別:
int i = 123;
int^ hi = i;      // 裝箱為 int^
int c = *hi;      // 拆箱:解參考
hi = nullptr;     // 空控制代碼

優勢

  • 隱式裝箱語法簡潔,符合 C# 習慣。
  • 強型別裝箱值 (int^) 保留靜態類型資訊,拆箱無需 dynamic_cast,直接解參考。
  • nullptr 統一表示空控制代碼,避免誤將 0 裝箱。

值/參考類型宣告

ref class RefType {};     // 參考類型
value class ValType {};   // 值類型
// ref/value 為上下文關鍵字,不衝突識別符
  • CLR 僅支援公有繼承,private/protected 繼承編譯錯誤。
  • class/struct 差別僅在預設可見性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved