值類型與參考類型的差異在於:值類型直接包含數值,參考類型含物件標頭(虛方法表、同步索引等),記憶體開銷大。CLR 提供裝箱機制橋接兩者。
ldloc 入堆疊。box IL 指令配置物件空間,複製值並加上物件標頭。stloc 存入區域變數。object o = 123;__box 關鍵字 Object* o = __box(123);int i = 123;
int^ hi = i; // 裝箱為 int^
int c = *hi; // 拆箱:解參考
hi = nullptr; // 空控制代碼
int^) 保留靜態類型資訊,拆箱無需 dynamic_cast,直接解參考。nullptr 統一表示空控制代碼,避免誤將 0 裝箱。ref class RefType {}; // 參考類型
value class ValType {}; // 值類型
// ref/value 為上下文關鍵字,不衝突識別符
private/protected 繼承編譯錯誤。class/struct 差別僅在預設可見性。