在C#中,装箱(boxing)和拆箱(unboxing)是用于在值类型和引用类型之间进行转换的过程。

装箱:(Boxing)

是将值类型转换为引用类型的过程。
将一个值类型赋值给一个对象类型时,编译器会自动将值类型包装在一个堆分配的对象中。这个过程会创建一个新的引用类型对象,并将值类型的值复制到该对象中。装箱操作会导致额外的内存开销和性能损失。

示例:

int i = 10;
object obj = i; // 装箱操作

拆箱:(Unboxing)

是将引用类型转换为值类型的过程。
当我们从一个装箱后的对象中取出值类型时,编译器会自动将对象转换回原始的值类型。这个过程会从堆中提取值类型的值,并将其存储在栈上。拆箱操作也会导致一定的性能损失。

示例:

object obj = 10;
int i = (int)obj; // 拆箱操作
02-19 23:20