C#装箱与拆箱介绍和用法示例

  • 先决条件:C#中的数据类型
目录先决条件:C#中的数据类型 装箱和拆箱是一个重要的概念C#。 C#类型系统包含三种数据类型:值类型(int, char等), 引用类型(对象)和指针类型。基本上, 它将值类型转换为引用类型, 反之亦然。装箱和拆箱可实现类型系统的统一视图, 在该系统中, 任何类型的值都可以视为对象。
在C#中装箱

将值类型(char, int等)转换为引用类型(对象)的过程称为装箱。
【C#装箱与拆箱介绍和用法示例】装箱是使用对象类型(超级类型)的隐式转换过程。
值类型始终存储在堆栈中。引用类型存储在堆中。
示例:int num = 23; // 23将分配给num对象Obj = num; //装箱
说明:
首先声明一个值类型变量(num), 它是整数类型, 并为其分配值23。现在创建引用对象类型(obj)并应用Explicit操作, 结果将num值类型复制并存储在对象引用类型obj中如下图所示:
C#装箱与拆箱介绍和用法示例

文章图片
让我们来了解
装箱
使用C#编程代码:
//C# implementation to demonstrate //the Boxing using System; class GFG {//Main Method static public void Main() {//assigned int value //2020 to num int num = 2020; //boxing object obj = num; //value of num to be change num = 100; System.Console.WriteLine ( "Value - type value of num is : {0}" , num); System.Console.WriteLine ( "Object - type value of obj is : {0}" , obj); } }

输出如下:
Value - type value of num is : 100 Object - type value of obj is : 2020

在C#中取消装箱

将引用类型转换为值类型的过程称为拆箱。
这是显式转换过程。
示例:int num = 23; //值类型为int并分配了值23 Object Obj = num; // Boxing int i =(int)Obj; //拆箱
说明:
声明值类型变量(num), 它是整数类型并分配有整数值23。现在, 创建参考对象类型(obj)。装箱的显式操作将创建一个值类型整数i并应用转换方法。然后, 将驻留在Heap上的引用类型复制到堆栈, 如下图所示:
C#装箱与拆箱介绍和用法示例

文章图片
让我们来了解
拆箱
使用C#编程代码:
//C# implementation to demonstrate //the Unboxing using System; class GFG {//Main Method static public void Main() {//assigned int value //23 to num int num = 23; //boxing object obj = num; //unboxing int i = ( int )obj; //Display result Console.WriteLine( "Value of ob object is : " + obj); Console.WriteLine( "Value of i is : " + i); } }

输出如下:
Value of ob object is : 23 Value of i is : 23

    推荐阅读