C# 装箱拆箱问题

[复制链接]
查看11 | 回复3 | 2013-5-17 22:45:18 | 显示全部楼层 |阅读模式
装箱是值类型到引用类型的转换。在.NET内存模型中,值类型分配在内存栈上,引用类型分配在堆上。装箱之后,值类型会被放置到堆上,然后再栈上创建一个对象引用(类似于指针)指向这个值类型。例如MSDN上这个例子int i = 123;object o = i;i = 456;i是值类型,可以存储不同的值,执行的时候i=456,o仍然是123。因为o是i的装箱,它引用的是分配在堆上的一块内存地址,i的原值123被复制到在这个内存地址。之后你再修改i,就不会影响到o。取消装箱是一个逆操作。之所以会有这种说法,是因为值类型和引用类型的分配位置不同,而有时候必须实现各种类型转换(例如值类型转为object,参见ArrayList类),所以有装箱...
回复

使用道具 举报

千问 | 2013-5-17 22:45:18 | 显示全部楼层
不管是装还是拆,都是为了实际的需要。比如你调用的一个函数之参数是一个object,这时你就必须装箱了。当然,如果不需要,就别去做,因为装和拆都会耗费资源的...
回复

使用道具 举报

千问 | 2013-5-17 22:45:18 | 显示全部楼层
值类型转换成引用类型为装箱,反之则拆箱!...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行