zoukankan      html  css  js  c++  java
  • 20130829装箱与拆箱的理解

    1、首先对c#数据类型理解:分为值类型和引用类型,对应的内存分配在栈和堆,注意是托管堆。

    2、内存分配

         值类型只分配在栈中。

         引用类型分配在内存与托管堆中

         托管堆对应于垃圾回收

    3、装箱拆箱是什么?

         装箱:用于在垃圾回收托管堆中存储值类型,此时已经是引用类型,装箱时值类型到object或此值类型所实现的任何接口的隐式转换。(比如struct值类型接口) 

         拆箱:object类型到值类型或从接口类型到实现该接口的值类型转换。

    4、装箱与拆箱的内部操作。

         装箱:对值类型在堆中分配一个对象实例,并将该值类型复制到新的对象中,按三部进行。

         step1:新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncblockIndex)

         step2:将值类型的实例字段拷贝到新的分配的内存中

         step:返回托管堆中新分配对象的地址。这个地址就是一个引用类型的地址。

  • 相关阅读:
    字符,字节和编码
    Linux网络参数和ifconfig
    默认网关 网关 子网掩码 广播地址
    S.M.A.R.T.记录几块ssd硬盘
    linux 别名
    echo 输出颜色
    Linux:echo命令详解
    centos下安装mongodb 通过shell脚本
    linux查看登录用户
    linux wget指定下载目录和重命名
  • 原文地址:https://www.cnblogs.com/newyue/p/3289407.html
Copyright © 2011-2022 走看看