zoukankan      html  css  js  c++  java
  • 天轰穿C#教程之装箱和拆箱[原创]

      接下来我们看下面试题中出现率非常高的一个知识点,装箱和拆箱。其实这个知识点对于实战来说,好像没有什么用处。可为什么企业在面试中会常常提到呢?


      首先明白这两个概念:

      装箱:将值类型转换为引用类型。

      拆箱:将引用类型转换为值类型。

      最常见的装拆箱是发生在值类型和object类型之间,例如:

      int i = 10;

      object o = i;

      装箱和拆箱(unboxing)可以把值类型转换为引用类型,或把引用类型转换为值类型。装箱用于描述把一个值类型转换为引用类型。运行库会为堆上的对象创建一个临时的引用类型"box"。该转换是隐式进行的,如上面的例子所述。

      拆箱用于描述相反的过程,即以前装箱的值类型转换回值类型。这里使用术语"cast",是因为这种数据类型转换是显式进行的。其语法类似于前面的显式类型转换:

      int i = 10;

      object o = i;  //装箱

      int j=int(o);  //拆箱

      只能把以前装箱的变量再转换为值类型。当o不是装箱后的int型时,如果执行上面的代码,就会在运行期间抛出一个异常。

      这里有一个警告。在拆箱时,必须非常小心,确保得到的值变量有足够的空间存储拆箱的值中的所有字节。例如,C#的int只有32位,所以把long值(64位)拆箱为int时,会产生一个InvalidCastException异常:

      long myLongNumber = 333333423;

      object myObject = (object)myLongNumber;

      int myIntNumber = (int)myObject;

      本文为天轰穿原著,转载请注明出处及作者!

  • 相关阅读:
    TP5常用函数总结1
    swiper 自定义的一些需求
    jQuery 点击元素以外任意地方隐藏该元素
    fastadmin中编辑时的fieldlist选项类型,如何跟数据库里的保持一致,并且显示匹配的样式
    leetcode——63. 不同路径 II
    leetcode——62.不同路径
    数组标签结束,下一个标签,动态规划
    leetcode——48. 旋转图像
    leetcode——45. 跳跃游戏 II
    leetcode——41. 缺失的第一个正数
  • 原文地址:https://www.cnblogs.com/thcjp/p/2754591.html
Copyright © 2011-2022 走看看