您的位置:首页 > 编程语言 > C#

关于C# 装箱拆箱的理解

2016-06-01 09:14 246 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/ZeroToOneToZero/article/details/51553410

C# 装箱拆箱笔记

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

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

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

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

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

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

4. 为何需要装箱?

最普通的使用场景:

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

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


总结:

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: