裝箱是將值類型隱式轉換為 object 或該值類型實作的介面類型。編譯器會自動產生一個 object 實例,並將值複製其中。
int i = 10;
object obj = i; // 隱式裝箱
object obj2 = (object)i; // 顯式裝箱(等效)

概念上等同於建立一個泛型包裝類別:
class T_Box {
T value;
T_Box(T t) { value = t; }
}
// 裝箱相當於:object obj = new T_Box(i);
using System;
class Test {
static void Main() {
int i = 10;
object obj = i; // 裝箱
if (obj is int) Console.WriteLine("i is boxed!");
i = 20; // 修改原值
Console.WriteLine($"int: i={i}"); // 20
Console.WriteLine($"object: obj={obj}"); // 10
}
}
輸出證明:裝箱建立的是獨立副本,原值變更不影響已裝箱的物件。
List<T>。