zoukankan      html  css  js  c++  java
  • 装箱和拆箱

           装箱就是将值类型用引用类型包装起来转换为引用类型;而从引用类型中拿到被包装的值类型数据进行拆箱。

            装箱过程其实就是把值类型拷贝到堆中,拆箱可以在引用类型中直接找到值类型存在的位置。如果一段代码中有装箱和拆箱的操作,在Reflector反编译器中,查看中间代码生成的IL语言,会有box,unbox命令。

           例如:

                   N.Tostring()其实是在n中创建了一个对象
                   Int  m=int.Psrse(s);这个不叫拆箱

                   Int n=10;
                   Conosle.Wtitline(n);
                   Object  o=n;//一次装箱
                   console.WriteLine((int)o);//这是一次拆箱
                   Console.writeline(o);//这里输出的是字符串“10”,相当于Console.Writeline(o.ToString())
                   这个例题装箱一次拆箱一次

          值得注意的是:引用类型和引用类型之间进行的操作不属于装箱和拆箱,装箱使用什么类型,拆箱也必须使用什么类型。

          例如:

                 Chinese  cn1=new Chinese();
                  Person p=cn1;
                  Chinese cn2=(Chinese)p;

                 就没有发生拆箱和装箱的问题。

          要掌握拆箱和装箱,就必须了解CTS以及它的特点。.NET重要技术和基础之一的CTS(Common Type System)。CTS是为了实现在应用程序声明和使用这些类型时必须遵循的规则而存在的通用类型系统。.Net将整个系统的类型分成两大类 :值类型和引用类型。CTS中的所有东西都是对象;所有的对象都源自一个基类——System.Object类型。值类型的一个最大的特点是它们不能为null,值类型的变量总有一个值。为了解决值类型不可以为null,引用类型可以为null的问题,微软在.Net中引入了装箱和拆箱

  • 相关阅读:
    C1FlexGrid双grid滚动条联动
    linux实用命令
    大数据学习1(linux环境搭建)
    一个数据开发工程师要知道的名词
    oracle快速向表插入大量数据
    读书笔记--(索引的扫描方式)
    SQL优化策略(数据仓库)
    oracle大表删除数据方案
    加密与解密
    Spring笔记之IOC
  • 原文地址:https://www.cnblogs.com/hanwenhuazuibang/p/2964105.html
Copyright © 2011-2022 走看看