一、定义

装箱:将值类型转化为引用类型,装箱一般会在堆上分配一块内存,用于存储要转换的值。

拆箱:将引用类型转化为值类型

注:.NET 2.0 引入的泛型其实在很大的程度上解决了装拆箱产生的类型转换问题,也减少了类型转换所引起的运行时的异常,及保证了类型安全,从而提高了性能。我们可以分别定义一个ArrayList(Add方法的参数是object,在添加整数的时候,需要将int转化为object类型,进行装箱操作)和一个泛型List<int> list,然后分别向这俩list中添加n多个数,测试下运行时间。

二、装箱过程图解

  int i = 123;  /System.Int32

  object o = i;  //对 i 装箱(隐式)进对象 o
  

  从图可知,对象 o 存的是地址引用,指向的是堆上的值,这个值的类型和变量 i 一样,也是 int 类型,值(123)也就是从变量 i Copy 过来的一个副本值而已。

三、拆箱过程图解

  int i = 123;      // 值类型
       object o = i;    // 装箱
       int j = (int)o;   // 拆箱
  

  要在运行时成功拆箱值类型,被拆箱的项必须是对一个对象的引用,该对象是先前通过装箱该值类型的实例创建的。

最新文章

  1. xwalk_core_library-15.44.384 .13.aar 百度云分享
  2. [资料搜集狂]D3.js数据可视化开发库
  3. NYOJ题目57 6174问题
  4. js判断是否安装pdf播放器
  5. [moka同学笔记]yii2场景的使用(摘录)
  6. ubuntu下配置java环境【转】
  7. 微信变声器(WeChat Voice)会是营销新利器吗
  8. Java [Leetcode 191]Number of 1 Bits
  9. HW6.2
  10. 嵌入Web资源的方法
  11. linux书籍推荐(转)
  12. 统计useragent和页面情况
  13. Hibernaate事务管理
  14. jQuery Mobile 学习
  15. php分布式redis实现session共享
  16. (转载记录)Active Directory 灾难恢复
  17. vnc server on Ubuntu
  18. Objective-C语法之nonatomic和atomic之间的区别
  19. 【数组】Sort Colors
  20. PLSA-概率潜语义分析(二)

热门文章

  1. 小 W 离职了
  2. web系统国际化思路
  3. js里的发布订阅模式及vue里的事件订阅实现
  4. 光学动作捕捉系统中的反光标识点(Marker点)
  5. GCD SUM
  6. YsoSerial 工具常用Payload分析之CC5、6(三)
  7. tomcat禁用PUT,DELETE等一些不必要的HTTP方法
  8. Python输出格式化
  9. js学习笔记之日期倒计时DOM操作
  10. loadrunner 利用JDBC操作mysql数据库