关于C# 装箱拆箱的理解

C# 装箱拆箱笔记

1.装箱,拆箱只是一个抽象概念

利用装箱拆箱功能可以让值类型的任何值与Object类型值互相转换(注意:只有被装箱过的对象才能被拆箱)

2.装箱:将值类型转换为引用类型

拆箱:将引用类型转换为值类型

3.在.NET中,数据类型分为值类型和引用类型值类型:在内存分配方式为栈内存,且值类型只会在栈中分配

引用类型:内存分配方式为堆内存(注意:是托管堆)

4. 为何需要装箱?

最普通的使用场景:

【1】调用一个带Object参数的方法,而object参数支持转换任意类型以便通用

【2】一个非泛型容器,同样是为了方便通用,而将元素类型定义为object,在传值的时候,也需要一个装箱过程


总结:

在装箱拆箱IL代码分析中能够观察到,这对内存和CPU是有额外性能损耗的,所以,一方面,尽量减少装箱拆箱操作,而是可以通过泛型来尽量避免这个问题

阅读更多
文章标签: C# 装箱 拆箱
个人分类: 笔记
下一篇IL指令详细(转自博客园【Zery】)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭