首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#C#基础

C#的装箱与拆箱

减小字体 增大字体 作者:本站  来源:本站原创  发布时间:2010-05-08 09:06:00

装箱(boxing)和拆箱(unboxing)是.NET提出得新概念!我们知道C#的所有类型都是由基类System.Object派生来的。如果在声明这些数据类型的时候都在堆(HEAP)中分配内存,会造成极低的效率。

为了解决这个问题,.NET的值类型在栈中分配内存,而引用型是在堆中分配内存,初始化为null,引用类型是需要通过垃圾回收器来回收内存,而值类型超过其作用域,就会失效。

有时我们需要将一个值类型转换为引用类型,而有时又需要把引用类型转换为值类型,有人把这种操作分别称之为装箱操作和拆箱操作。

即,装箱操作是指把一个值类型的数据转换为对象类型的,如:

        using  System;
               class class1
               {
                      static void Main()
                      {
                             int a=0;
                             object obj = i;
                             .......
                      }
                }

上面的代码中,object obj = i;就是一个装箱操作,它把一个值类型,即int型的数据隐式转换为对象类型。

拆箱就是将一个引用类型的对象转换成值类型!比如:

        int a=0;
               object obj=a;    //装箱操作
               int b=(int)obj;  //拆箱操作

 从以上的操作过程中,我们看到装箱操作是一种隐式数据类型转换,是自动进行的,而拆箱操作是一种显示的数据类型转换,需要强制进行。

更深入的探讨,大家可以看下面的两篇文章。

http://www.cnblogs.com/qunews/archive/2007/10/03/913349.html

http://blog.csdn.net/gsky/archive/2008/03/27/2222423.aspx

(本文写作过程中,参考了http://life.netskycn.com/htm_data/11/0808/2230.html中的内容)

本文为自己原创,请勿转载。如需转载请注明出处:翔宇亭IT乐园(http://www.biye5u.com


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.