• 装箱与拆箱/复制内存


    1、值类型和引用类型的区别
       任何一个值类型都是线程堆栈上的一块内存,而引用类型则是托管堆上的一块内存,值类型多个变量不能共享一款内存、但引用类型可以多个应用类型对应一个托管堆上的一块内存。
    2、变量的存放位置与值类型、引用类型有关
       在非托管时代,例如:VC++决定变量的存储位置是堆还是栈的是有开发人员。而在托管时代,值类型变量一定存储在线程堆栈上,引用类型一定存储在托管堆上。
    3、装箱《==》拆箱是一种错误的认识
       a、装箱的过程:值类型转换为引用类型时发生装箱,首先在托管堆上分配一块内存,然后将值和其他附件信息复制到托管堆上新分配的内存上。
       b、拆箱过程:引用类型转换为值类型时发生拆箱,只是取出托管堆上的引用类型的值元素,并没有在线程堆栈上分配空间。
       c、拆箱后复制内存:将拆箱后得到的值元素赋给在线程堆栈上的值类型。
       由此可知,装箱和拆箱并不是互逆的过程,‘装箱’应该和‘拆箱/复制内存’是互逆的过程,相对而言,装箱的过程比拆箱的过程要复杂,因为装箱是在托管堆上新开辟了一块内存,而拆箱的过程仅仅是读出托管堆上的引用类型的值元素。
    4、小结
       在下列情况下应尽量使用引用类型的变量(后续完成)。
       
      
  • 相关阅读:
    注册表
    windows.location.href在IE6下停止工作
    LINUX配置IP的三种方式
    InnoSetup 打包代码 检测.netFramework
    SQLiteHelper
    黑马程序员_看视频记笔记_C#编程基础02
    通过注册表来检测是否安装Office
    SQLiteHelper
    TSQL
    IIS下发布关于Excel导入导出时遇到的问题集锦
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/717765.html
Copyright © 2020-2023  润新知