• C#中的装箱和拆箱(boxing and unboxing)


    重新认识C#,记录点点滴滴

    C#中的装箱和拆箱操作指的分别是把值类型转换成引用类型(装箱)和吧引用类型转换成值类型(unboxing)。

    装箱用于描述把一个值类型转换成引用类型,运行库会在堆上为该对象创建一个临时的引用类型的“箱子”。改装换可以隐式地进行,如下所示:

       1: int myInt = 10;
       2:  
       3: object myObj = myInt;

    拆箱用于描述相反的过程,该操作将装箱的值类型强制转换回原来的引用类型。这个转换必须使用显式的强制转换。其语法类似于显式的类型转换,如下所示:

       1: int myInt = 20;
       2:  
       3: object myObj = myInt;
       4:  
       5: int mySecondInt = (int)myObj;

    拆箱操作只能对以前装箱的变量进行拆箱。当myObj不是装箱后的int型时,如果代码中将其强制转换成int将会在运行期间抛出异常。

    同时,在拆箱操作时必须确保得到的值变量有足够的空间存储拆箱的值的所有字节。

    例如: C#的int是32位的long是64位的,所以把long值拆箱为int时会导致一个InvaildCastException异常。如下:

       1: long myLong = 999888777;
       2:  
       3: object myObj = myLong;
       4:  
       5: int myInt = (int)myObj;  //InvaildCastException
       6:  
    Technorati 标签: C#,装箱,拆箱,boxing,unboxing
  • 相关阅读:
    华为机试练习(一)
    LM拟合算法
    5.1 模块化程序设计
    第3周 运算的流程控制
    KEGG数据库介绍
    topGO
    GO.db
    Bioconductor应用领域之基因芯片
    org.Hs.eg.db包简介(转换NCBI、ensemble等数据库中基因ID,symbol等之间的转换)
    Bioconductor的历史
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1921103.html
Copyright © 2020-2023  润新知