C#中的装箱和拆箱

来源:互联网 发布:分析结果与关系的算法 编辑:程序博客网 时间:2024/06/06 01:58

   下面我们先看例子,然后对着例子解析:

            //装箱            int i = 42;            object o = i;            i++;            Console.WriteLine("i的值为{0}", i);            Console.WriteLine("o的值为{0}", o);            //拆箱            int j = (int)o;            Console.WriteLine("j的值为{0}", j);
运行结果:

1.装箱

object对象可以引用任何类型的任何对象,也可以引用值类型

这种将一个数据项从栈自动复制到堆的行为称为装箱(Boxing),上面的i++之后,o的值没改变的原因是:如果修改一个变量的原始值,那么不会修改堆上现有的值,因为它只是一个副本。

2.拆箱

为了访问已装箱的值,必须进行一次强制类型转换,这个操作会检查是否能够安全地将一种类型转换成另一种类型,然后执行转换。


注意:拆箱时,指定的类型必须与装箱的类型完全一致!!!

0 0
原创粉丝点击