C# 装箱和拆箱

时间:2022-04-24
本文章向大家介绍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异常。