关闭

关于C# 装箱拆箱的理解

标签: C#装箱拆箱
109人阅读 评论(0) 收藏 举报
分类:

C# 装箱拆箱笔记

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

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

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

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

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

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

4. 为何需要装箱?

最普通的使用场景:

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

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


总结:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:206次
    • 积分:7
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档