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
  • 相关阅读:
    一条长为L的绳子,一面靠墙,另外三边组成矩形,问此矩形最大面积能是多少?
    幸运的背后,总是靠自身的努力在支撑
    ZT:没有谁的成功是横空出世
    Node.js abaike图片批量下载爬虫1.02
    Node.js nvshens图片批量下载爬虫1.01
    Node.js meitulu图片批量下载爬虫1.051
    JDBC学习再小结
    JDBC学习小结
    day06_JDBC学习笔记
    MySQL学习小结
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1921103.html
Copyright © 2011-2022 走看看