A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙健 中级黑马   /  2013-10-26 14:59  /  1242 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙健 于 2013-10-26 16:30 编辑

求解装箱和拆箱

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
拆箱是  引用类型转换为值类型。
装箱是 值类型转换为引用类型。
引用类型如 string 类型,数组等。。
值类型 int类型 char类型 bool类型 double类型等。
注意!!!我们在写代码的过程当中,应该尽量的去避免装箱或者拆箱的出现,因为,凡是出现了装箱或者拆箱
都会影响程序运行时间。
不管是发生装箱还是拆箱,必须要复合一个条件:发生拆箱或者装箱的两种类型必须有继承关系。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
装箱就是将一个变量的数据转换成Object类型存储起来,你后面在对该变量数据进行修改的时候,该变量的数据值是不会改变的,直到你再对该变量数据进行拆箱操作。

拆箱就是将一个变量数据从Object类型转换成其他的子类型。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 宋清飞 于 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");
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
简单点说就一句话,从值类型接口转换到引用类型装箱,从引用类型转换到值类型拆箱。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马