黑马程序员技术交流社区

标题: 求解装箱和拆箱 [打印本页]

作者: 孙健    时间: 2013-10-26 14:59
标题: 求解装箱和拆箱
本帖最后由 孙健 于 2013-10-26 16:30 编辑

求解装箱和拆箱
作者: 有你珍贵    时间: 2013-10-26 15:42
拆箱是  引用类型转换为值类型。
装箱是 值类型转换为引用类型。
引用类型如 string 类型,数组等。。
值类型 int类型 char类型 bool类型 double类型等。
注意!!!我们在写代码的过程当中,应该尽量的去避免装箱或者拆箱的出现,因为,凡是出现了装箱或者拆箱
都会影响程序运行时间。
不管是发生装箱还是拆箱,必须要复合一个条件:发生拆箱或者装箱的两种类型必须有继承关系。
作者: nooooy    时间: 2013-10-26 16:00
装箱就是将一个变量的数据转换成Object类型存储起来,你后面在对该变量数据进行修改的时候,该变量的数据值是不会改变的,直到你再对该变量数据进行拆箱操作。

拆箱就是将一个变量数据从Object类型转换成其他的子类型。
作者: 宋清飞    时间: 2013-10-26 16:16
本帖最后由 宋清飞 于 2013-10-26 16:20 编辑

想把一个结构实例当做引用类型对象,就需要装箱。(是隐式转换)
拆箱就是把装箱后的对象转换回值类型。(是显式转换)

装箱:
装箱的过程实际就是制作值类型变量的引用类型副本。所以它的返回值是引用类型副本,在装箱之后,该值有两份副本——原始值类型和引用类型副本,每一个都可以独立操作。
  1. int i=10;       //创建并初始化值类型

  2. object oi=i;   //创建并初始化引用类型
  3. Console.WriteLine("i:{0},io:{1}",i,oi);

  4. i=12;
  5. oi=15;
  6. Console.WriteLine("i:{0},io:{1}",i,oi);

  7. 结果如下:
  8. i:10, io:10
  9. i:12, io:15
复制代码
拆箱:
  1. static void Main()
  2.    {
  3.        int i=10;
  4.        object oi=i;    //对i装箱并把引用赋值给oi
  5.        int j=(int)oi;   //对oi拆箱并把值赋值给j
  6.        Console.WriteLine("i:{0},oi:{1},j:{2},i,oi,j");
复制代码

作者: 思·长安    时间: 2013-10-26 22:33
简单点说就一句话,从值类型接口转换到引用类型装箱,从引用类型转换到值类型拆箱。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2