C#基础复习(2) 之 装箱拆箱

本文详细解释了C#中的装箱和拆箱概念,包括它们的定义、何时发生以及效率问题。装箱是将值类型转换为引用类型,而拆箱则是相反的过程。装箱在值类型转换为对象、System.ValueType或实现的接口引用时发生,而拆箱在从引用类型转换回值类型时进行。由于装箱会产生副本,所以修改装箱后的值不会影响原始值。装箱操作通常是低效的,尤其是在频繁进行时,而拆箱操作本身效率较高,但通常伴随着值的复制。使用泛型可以有效避免装箱拆箱,提高代码性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料

[1] @只增笑耳Jason的回答 https://www.zhihu.com/question/57208269
[2] 《C# 捷径教程》

疑难解答

  1. 装箱和拆箱是什么?
  2. 何时发生装箱与拆箱?
  3. 装箱与拆箱的效率如何?

装箱和拆箱是什么?

在C#中,装箱和拆箱发生在值类型与引用类型之间。当我们把一个值类型转换成引用类型时,就发生了装箱操作。反之,当我们将一个引用类型转换成值类型时,就发生了拆箱操作。对于值类型和引用类型,感觉《C# 捷径教程》中讲的比较详尽(当然也可以参考我上一篇写的关于值类型与引用类型的文章):

你用类来定义对象,用结构来定义值。二者之间存在一个清晰的界限。对象存活在有垃圾回收的内存堆上。值通常存活在临时的存储空间里,比如栈。前面提到过的一个显著的例外就是,如果值类型作为一个字段被包含在一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值