首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
.NET技术
C#
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
请用通俗点讲解下C#中装箱拆箱概念,不太理解啊!
[已结贴,结贴人:aspnet30]
加为好友
发送私信
在线聊天
aspnet30
aspnet
等级:
可用分等级:
长工
总技术专家分:
400
总技术专家分排名:
38495
揭帖率:
96.10%
发表于:
2008-08-23 13:47:39
楼主
请用通俗点讲解下C#中装箱拆箱概念,不太理解啊!
谢谢
问题点数:
40
回复次数:
5
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
caicai_45
菜菜
等级:
可用分等级:
富农
总技术专家分:
1368
总技术专家分排名:
15195
发表于:
2008-08-23 14:09:53
1
楼 得分:
8
int a = 3;
object c = a;//装箱
int b = (int)c;//拆箱
代码形式上就是这样的。
从原理上来说,是值类型和引用类型的内存分配不一样。
int 这样的值类型可以说是没有指针的,就是在栈上开辟一段空间,把值放进去。
object 这样的引用类型,是在栈上分配指针,指向堆中的一段内存,这段内存才是真正的数据。
比如一个int变成 object 的话,就需要在在堆上创建一段内存空间,把int值存入,然后在栈上存入这个堆的地址
一个object变为int,反过来,需要先从堆中读取数据,然后在栈上存入这个数值。
所以装箱和拆箱操作过于频繁,会导致频繁的在堆栈上的操作,浪费CPU,浪费内存。
泛型的集合类出现,基本解决了这样的问题,基本不需要类型转化,对应的,装箱和拆箱也大规模的减少。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
LQknife
顶顶更健康
等级:
可用分等级:
中农
总技术专家分:
4166
总技术专家分排名:
6416
发表于:
2008-08-23 14:14:39
2
楼 得分:
8
用.net框架程序集设置书里的一个例子来说说
ArrayList.Add(object obj);
接受一个object类型的参数 现在你传一个int类型的参数比如是 i 进去
可是这个方法接受的是一个引用类型的object你传进去的是一个值类型的 i
为了达到类型匹配,.net就通过一种叫做装箱的机制来处理这样的问题
就是说你必须把 i 这个参数给我包装一下不然我不认,怎么包装就是装箱了
不是太形象 o(∩_∩)o...哈哈
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yagebu1983
君子在下则排一方之难,在上则止息万物之嚣. 人以懦弱无刚为大耻,男儿自立,必须有倔强之气.
等级:
可用分等级:
长工
总技术专家分:
11701
总技术专家分排名:
1635
发表于:
2008-08-23 14:19:23
3
楼 得分:
8
就是值类型与引用类型的相互转换!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yagebu1983
君子在下则排一方之难,在上则止息万物之嚣. 人以懦弱无刚为大耻,男儿自立,必须有倔强之气.
等级:
可用分等级:
长工
总技术专家分:
11701
总技术专家分排名:
1635
发表于:
2008-08-23 14:20:53
4
楼 得分:
8
值类型---》引用类型 是装箱
引用类型----》值类型 是拆箱
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
No4000
等级:
可用分等级:
中农
总技术专家分:
172
总技术专家分排名:
65215
发表于:
2008-08-23 14:39:18
5
楼 得分:
8
值类型转换类类型->装箱 object obj = (object)其他任何值类型
拆箱是把类类型即引用类型,转换为值类型,但引用类型转换值类型的格式要正确.如:int i = (int)引用类型
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友