C# 装箱和拆箱

本文探讨了C#中的值类型和引用类型如何通过装箱和拆箱过程相互转换。装箱是将值类型转换为引用类型,而拆箱则是相反的过程。文章还提供了具体的代码示例说明了这一过程中的注意事项。

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异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值