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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenan0124 中级黑马   /  2013-12-16 13:49  /  1635 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 chenan0124 于 2013-12-16 14:35 编辑

什么是装箱(boxing)和拆箱(unboxing)? 会影响性能吗?

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

5 个回复

倒序浏览
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。  
            object obj = null;//引用类型
            obj = 1;//装箱,boxing。把值类型包装为引用类型。
            int i1 = (int)obj;//拆箱。unboxing

评分

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

查看全部评分

回复 使用道具 举报
装箱就是值类型转换为引用类型,拆箱就是引用类型转换为值类型。

评分

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

查看全部评分

回复 使用道具 举报
1.值类型存储在栈上,引用类型存储在堆上。
2.C#类是引用类型,结构是值类型。
3..net很容易吧值类型转换为引用类型,所以可以在需要对象的任意地方使用值类型。例如,int可以赋予一个对象。从值类型转换为引用类型称为装箱。
4.如果方法需要把一个对象作为参数,同时传递一个值类型,装箱操作就会自动进行。另一方面,装箱的值类型可以使用拆箱操作转换为值类型。
5.在拆箱时,需要使用类型强制转换运算符。

评分

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

查看全部评分

回复 使用道具 举报
1、装箱或者拆箱
1)、装箱指的就是将值类型转换为引用类型
2)、拆箱指的就是将引用类型转换为值类型
注意:发生装箱和拆箱要满足的大条件就是这两个类型之间存在继承关系。
如果这两个类型没有继承关系,那么就不存在装箱或者拆箱。

评分

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

查看全部评分

回复 使用道具 举报
装箱:从值类型转换到引用类型(一般都是值类型转换成object类型)
拆箱:从“装箱后的值类型”中(应该说是引用类型但是为了区分常规的引用类型,它实际带有值类型数据成员的引用类型)返回值类型部分的起始地址,这一过程叫做拆箱;然而很多书上把利用返回来的地址将数据赋值给值类型对象这一过程也包含到了拆箱中,实际的拆箱是不包含赋值这一过程的

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马