博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 装箱和拆箱
阅读量:6564 次
发布时间:2019-06-24

本文共 699 字,大约阅读时间需要 2 分钟。

C#的值类型可以分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型。

1、那么值类型和引用类型能否相互转换呢?

答案是肯定的,C#通过装箱和拆箱来实现两者的相互转换。

(1)、装箱   ---把值类型强制转换成引用类型(object类型)

(2)、拆箱   ---把引用类型强制转换成值类型,这个过程也称之为"强制转换"

注:拆箱只能对以前装箱的变量进行拆箱,代码如下:

static void Main(string[] args)        {            string num = "666";            object obj = num;            int unboxnum = (int)num;            Console.WriteLine(unboxnum);        }

在拆箱的过程中,确保得到的值有足够的空间得到拆箱中的值中的所有的字节,代码如下:

long num = 666666666666666666;            object obj = num;            checked            {                int unboxnum = (int)obj;                Console.WriteLine(unboxnum);            }

拆箱后的值无法接收long的值,所以报了InvalidCastException异常。

转载于:https://www.cnblogs.com/GreenLeaves/p/6835741.html

你可能感兴趣的文章
Python基础学习(第2天)
查看>>
javascript延迟加载及异步(defer和async)
查看>>
我理解的关于Vue.nextTick()的正确使用
查看>>
各种算法优劣对比
查看>>
文件包含
查看>>
【整理】数组面试题集锦
查看>>
hbase命令备忘
查看>>
uni-app 调用支付宝支付
查看>>
MySQL主备停机步骤与注意事项
查看>>
Web服务及http协议
查看>>
算法导论——基本的图算法
查看>>
先排序然后union all失效,mysql数据库多个表union all查询并排序的结果为什么错误...
查看>>
《几何与代数导引》习题1.34.2
查看>>
陶哲轩实分析引理18.4.2:半空间是可测集
查看>>
UI<10> - UISegmentControl<10>
查看>>
多继承之MRO
查看>>
Dubbo的应用
查看>>
volatile在外设寄存器基地址定义时的作用
查看>>
前线解释多线程之委托《三》
查看>>
c#连接MySql数据库的两种方法
查看>>