一,装箱操作
C# 包含两种基本的数据类型,值类型和引用类型。
值类型存储在栈中,引用类型存储在堆中,互不干扰。但当两者发生转换时,就产生了装箱的操作。
装箱操作的步骤。
1) 在堆中分配好内存。它将用于存放值类型数据。
2) 内存复制,栈上的值类型的数据复制到堆上。
3) 对象的接口或引用更新,指向堆上的位置。
从上述步骤可以看出,装箱的实质是要把值类型转换成引用类型。
先在堆上分配好内存(一个箱子),再把栈上值类型的值复制进去(装的操作)。最后把新的堆上的地址
赋给一个引用类型。
代码对照:
C# 代码
namespace _01BoxingBase
{
class Program
{
static void Main(string[] args)
{
int nTest = 12;
double unBox = 0;
//执行装箱和拆箱操作
Object obj = nTest;
unBox = (double)(int)obj;
Console.ReadKey();
}
}
}
CIL代码
</