zoukankan      html  css  js  c++  java
  • C#基础知识---装箱与拆箱

    一、定义

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

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

    注:.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;   // 拆箱

      

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

  • 相关阅读:
    HTMLDOM
    换行
    【iOS】APP之数据存储
    开启远程XUL
    iOS之Streams
    Plugin的生命周期
    ActiveX Control Test Container
    ObjectiveC Runtime III【objc_msgSend函数】
    What is a Digital Signature?
    JS变量作用域
  • 原文地址:https://www.cnblogs.com/3xiaolonglong/p/9674475.html
Copyright © 2011-2022 走看看