首页 > Windows开发 > 详细

C#之装箱与拆箱

时间:2015-02-27 01:24:53      阅读:308      评论:0      收藏:0      [点我收藏+]

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();
        }
    }
}

 

C#之装箱与拆箱

原文:http://www.cnblogs.com/blogofwyl/p/4302464.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!