您的位置:首页 > 编程语言 > C#

C#之装箱与拆箱

2015-02-27 00:17 190 查看
C#中值类型和和引用类型实质上是同源的,所以不但可以从值类型和引用类型之间进行转换,也可以在值类型和引用类型之间进行转换。,但是两者使用的内存类型不同,使他们的转换变得复杂。

1.装箱:

  在C#中通常将值类型转换成引用类型叫做装箱。

C#中值类型装箱为引用类型的过程如下:

  在托管堆中创建一个新的对象实例,并分配相应的内存。

  将值类型变量值复制到对象实例中。

将对象实例地址压入堆栈中,并指向一个引用类型。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int mm = 50;    //定义值类型变量
object nn = mm; //将值类型变量装箱到引用型类型汇总
Console.WriteLine("值为{0},装箱对象为{1}",nn,mm);

mm = 100;       //改变值
Console.WriteLine("值为{0},装箱对象为{1}", mm, nn);

Console.ReadKey();
}
}
}


运行结果如下:



2.拆箱:

  在C#中通常将引用类型转换成值类型叫做拆箱。C#中一个引用类型拆箱成一个值类型的流程如下:

检查该对象的实例是否是某个给定的值类型装箱后的值。

如果是则将值从实例中复制出来。

赋值给值类型变量。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int mm = 50;
object nn = mm;
Console.WriteLine("装箱:值为{0},装箱对象为{1}", mm, nn);
int zz = (int)nn;//取消装箱=拆箱
Console.WriteLine("拆箱:装箱对象为{0},值为:{1}",nn , zz);
Console.ReadKey();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: