C#的装箱和拆箱

2018-08-12  23:03:05

装箱是将值类型转换为 object 类型或由此值类型实现的任何接口类型的过程。 当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上。 取消装箱将从对象中提取值类型。 装箱是隐式的;取消装箱是显式的。 装箱和取消装箱的概念是类型系统 C# 统一视图的基础,其中任一类型的值都被视为一个对象。

图示:

理解:装箱(boxing)将值类型赋值给引用类型。从栈(stack)到堆(heap)。

      拆箱(unboxing) 将引用类型还给值类型变量。从堆到栈。虽然不一定成功。

示例:boxing

1 int i = 123;
2 // The following line boxes i.
3 object o = i;

示例:unboxing

1 o = 123;
2 i = (int)o;  // unboxing

猜你喜欢

转载自www.cnblogs.com/newdavy/p/9465419.html