c#开发日记:c#中装箱和拆箱定义详解

装箱

用于在垃圾回收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。

例子如下:

int a = 1;  
object b = a;  
Console.WriteLine ("b的值为: {0}", b);

##将a装箱

拆箱

例子如下:

int a = 1;  
object b = a;  
int c = (int) b;  
Console.WriteLine ("c的值为: {0}", c);  

##前两步将a装箱,最后一步将b拆箱

总结

<1> 被装过箱的对象才能被拆箱
<2> c#中的数据类型划分为值类型和引用类型,对应的c#中内存分配为两种方式,一是栈,二是托管堆。值类型只会在栈中分配。引用类型分配内存与托管堆。托管堆对应于垃圾回收
<3> 装箱和拆箱就是把值类型转为引用形或把引用形转为值,就是为了通用,但是会影响效率。虽然书上说尽量减少使用,其实大部分情况下不计较这个。因为如把一个方法的参数设置为object实在太方便,装箱的目的,是为了解决未知参数类型传入的问题,装箱操作的产生有它的历史性.但是目前,已经重载和泛型,所以装箱已经没有使用的太大意义了.因为装箱的过程会产生额外的系统消耗,影响效率.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hallo啊 树哥!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值