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
  • 相关阅读:
    读 Kafka 源码写优雅业务代码:配置类
    如何安装FTP服务器,并实现文件共享
    Merge into用法总结
    Insomnia 跟 Postman 类似的软件
    iOS dealloc中初始化weak指针崩溃防护
    Centos7安装febootstrap
    获取 linux 系统 CPU、内存、磁盘 IO 等信息的脚本
    Git本地远程仓库
    网络及服务故障的排查思路
    Git配置远程仓库(密匙链接)
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1921103.html
Copyright © 2011-2022 走看看