zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    关于MySQL中ALTER TABLE 的命令用法——SQL
    replace函数——SQL
    SQL构造一个触发器
    【视频转换】监控视频DAV转mp4
    【pyqt5+opencv】如何将大量图片合成一张图
    【OpenCV+pyqt5】视频抽帧裁剪与图片转视频
    【Caffe】生成数据之修改label
    【labelme】标注工具Trick
    【OpenCV+pyqt5】视频抽帧相关操作
    【pyqt5】Pyinstaller封装OpenCV异常
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1921103.html
Copyright © 2011-2022 走看看