A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fcyan86 中级黑马   /  2013-6-4 16:08  /  1838 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 fcyan86 于 2013-6-4 23:15 编辑

装箱可以将一个值类型转换成一个引用类型,拆箱是将对象丰用保存的值转换成对应的栈上的值类型的过程,
值类型保存在栈上,引用类型保存在堆上
那么:
装箱是在堆上创建一个对该值的引用,还是将该值复制一份到堆上,然后返回堆上该值的引用。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

7 个回复

倒序浏览
1
装箱: 将值类型转换为引用类型的过程
拆箱:将引用类型转换为值类型的过程
装箱和拆箱都是在父类和子类的基础上
也就是显示转换和隐式转换

int n=10;
object o=n;//装箱
int m=(int)o;//拆箱
Console.WriteLine(m);

//由于Int32是结构,结构是值类型
由于Int32还是实现了Icomparable接口,接口是引用类型
Int32到Icomparable 发生了装箱,Icomparable到Int32发生了拆箱//
int n1=10;
Icomparable com=n1;//装箱
int m=(int)com;//拆箱

string s1="a";
string s2="b";
int s3=10;
double s4=1.0;
string.Concat(s1,s2,s3,s4); //Concat里面参数是object ,object是引用类型,string是引用类型,int,double 是值类型,所以发生两次装箱。
2
注意 装箱的时候 ,使用什么类型装的,拆箱的时候就必须使用对应的类型才能拆箱



评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报 1 0
装箱是将该值复制一份到堆上,然后返回堆上该值的引用。
回复 使用道具 举报
李奔 发表于 2013-6-4 17:41
装箱是将该值复制一份到堆上,然后返回堆上该值的引用。

还是这个答案比较实在,2楼的复制的内容,有此些答非所问
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
fcyan86 发表于 2013-6-4 23:14
还是这个答案比较实在,2楼的复制的内容,有此些答非所问

谢谢!
不知道现在加分的童鞋都怎么想的,自己辛辛苦苦回答的问题,虽然短但简洁明了,使人一看就能明白,
而有的人虽然回答的长,但都是复制,却得分了!
强烈建议加分的童鞋好好反思一番!!!:@
回复 使用道具 举报
李奔 发表于 2013-6-6 23:02
谢谢!
不知道现在加分的童鞋都怎么想的,自己辛辛苦苦回答的问题,虽然短但简洁明了,使人一看就能明白 ...

多发贴,一会就升上去了
回复 使用道具 举报
谢谢童鞋!
{:soso_e118:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马