1.装箱
装箱转换是指将值类型的数据隐式转换成对象类型(object)的数据,或者是一个被该值类型数据对应的接口类型数据。
例如下面语句执行了装箱转换:
int i = 120;
object obj = i;
在上面的语句中,第1条语句声明一个整型变量i并对其赋值,在第2条语句中创建一个object类型的实例obj,然后将i的值复制给该obj。
当然也可以进行显式转换,例如:
int i = 120;
object obj = (object) i;
以下是代码演示装箱转换:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BoxingDemo
{
class BoxingDemo
{
static void Main()
{
Console.WriteLine("装箱转换演示:");
int i = 120;
object obj = i;
i = 300;
Console.WriteLine("obj = {0}",obj);
Console.WriteLine("i = {0}",i);
Console.read();
}
}
}
2.拆箱
和装箱相反,拆箱转换是指将一个对象类型的数据显式转换成一个值类型数据,或者将一个接口类型显式转换成一个执行该接口的值类型数据。
拆箱包括两步,首先检查对象实例,确保其是给定值类型的一个装箱值,然后把实例的值复制到值类型数据中。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnboxingDemo
{
class UnboxingDemo
{
static void Main()
{
Console.WriteLine("装箱转换演示:");
int i = 225;
object obj = i;
int j = (int)obj;
Console.WriteLine("i = {0}\nobj = {1}\nj = {2}",i,obj,j);
}
}
}