zoukankan      html  css  js  c++  java
  • 什么是拆箱和装箱?

    1.什么是拆箱和装箱?

    装箱就是值类型转换为引用类型,拆箱就是引用类型(被装箱的对象)转换为值类型。

    2.什么是箱子?

    就是引用类型对象。

    3.箱子放在哪里?

    托管堆上。

    4.装箱和拆箱有什么性能影响?

    装箱和拆箱都涉及到内存的分配和对象的创建,有较大的性能影响。

    5.如何避免隐身装箱?

    编码中,多使用泛型、显示装箱。

    6.箱子的基本结构?

    上面说了,箱子就是一个引用类型对象,因此她的结构,主要包含两部分:

    • 值类型字段值;
    • 引用类型的标准配置,引用对象的额外空间:TypeHandle和同步索引块,关于这两个概念在本系列后面的文章会深入探讨。

    7.装箱的过程?

    • 1.在堆中申请内存,内存大小为值类型的大小,再加上额外固定空间(引用类型的标配:TypeHandle和同步索引块);
    • 2.将值类型的字段值(x=1023)拷贝新分配的内存中;
    • 3.返回新引用对象的地址(给引用变量object o)

    8.拆箱的过程?

    • 1.检查实例对象(object o)是否有效,如是否为null,其装箱的类型与拆箱的类型(int)是否一致,如检测不合法,抛出异常;
    • 2.指针返回,就是获取装箱对象(object o)中值类型字段值的地址;
    • 3.字段拷贝,把装箱对象(object o)中值类型字段值拷贝到栈上,意思就是创建一个新的值类型变量来存储拆箱后的值;
    作  者:大師兄丶
    出  处:http://www.cnblogs.com/zhao-yi
    Git 地 址:https://github.com/ZhaoYis
    个人博客:http://www.zhaoyis.com.cn
    关于作者:主要从事基于.Net Framework平台的项目开发。如有问题或建议,请多多赐教!
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!
  • 相关阅读:
    日记功能发布
    功能小改进
    CuteEditor 6.0一个很奇怪的Bug
    关于博客园.NET俱乐部的公告
    新功能发布
    建立了一个博客园创业者QQ群
    思想决定生活 《卡耐基成功之道全书》读书笔记
    建立了一个英语学习小组
    实际上我没有选择的余地
    公告
  • 原文地址:https://www.cnblogs.com/zhao-yi/p/6225915.html
Copyright © 2011-2022 走看看