C#基础知识---装箱与拆箱
2024-10-19 11:51:41
一、定义
装箱:将值类型转化为引用类型,装箱一般会在堆上分配一块内存,用于存储要转换的值。
拆箱:将引用类型转化为值类型
注:.NET 2.0 引入的泛型其实在很大的程度上解决了装拆箱产生的类型转换问题,也减少了类型转换所引起的运行时的异常,及保证了类型安全,从而提高了性能。我们可以分别定义一个ArrayList(Add方法的参数是object,在添加整数的时候,需要将int转化为object类型,进行装箱操作)和一个泛型List<int> list,然后分别向这俩list中添加n多个数,测试下运行时间。
二、装箱过程图解
int i = 123; /System.Int32
object o = i; //对 i 装箱(隐式)进对象 o
从图可知,对象 o 存的是地址引用,指向的是堆上的值,这个值的类型和变量 i 一样,也是 int 类型,值(123)也就是从变量 i Copy 过来的一个副本值而已。
三、拆箱过程图解
int i = 123; // 值类型
object o = i; // 装箱
int j = (int)o; // 拆箱
要在运行时成功拆箱值类型,被拆箱的项必须是对一个对象的引用,该对象是先前通过装箱该值类型的实例创建的。
最新文章
- xwalk_core_library-15.44.384 .13.aar 百度云分享
- [资料搜集狂]D3.js数据可视化开发库
- NYOJ题目57 6174问题
- js判断是否安装pdf播放器
- [moka同学笔记]yii2场景的使用(摘录)
- ubuntu下配置java环境【转】
- 微信变声器(WeChat Voice)会是营销新利器吗
- Java [Leetcode 191]Number of 1 Bits
- HW6.2
- 嵌入Web资源的方法
- linux书籍推荐(转)
- 统计useragent和页面情况
- Hibernaate事务管理
- jQuery Mobile 学习
- php分布式redis实现session共享
- (转载记录)Active Directory 灾难恢复
- vnc server on Ubuntu
- Objective-C语法之nonatomic和atomic之间的区别
- 【数组】Sort Colors
- PLSA-概率潜语义分析(二)