ITPub博客

首页 > Linux操作系统 > Linux操作系统 > .net 中的装箱与拆箱

.net 中的装箱与拆箱

原创 Linux操作系统 作者:iDotNetSpace 时间:2010-01-19 10:20:51 0 删除 编辑
  .net中的类型被分成了两类:Value Type跟Reference Type,并且在其中设计了一个机制就是所有的类型都是继承自一个根类:System.Object,这个跟MFC中所有的类都继承自CObject好像有点类似。

     值类型实例的特点在于它是一般直接被分配在栈上的,通过其地址来引用。而当我们要分配一个引用类型的实例时,先在堆中创建这个实例存放区域,然后在栈中放 一个变量,来存储该区域的地址。我们的引用实例,实际上是这个地址值,而不是堆中那一块存储空间。目前来说,我还没有领会到这种设计方式的好处在哪儿。

    至于装箱,拆箱,就是将值类型的基本类型与System.Object类之间进行互相转换,为什么要设计这种可以进行转换的机制呢,我想目的就是为了让一 个接受Object对象类型的函数,不仅仅能够接受常见的类引用对象,而且可以接受普通的值类型对象。而如果就为了这个效果,将所有的基本类型设计为引用 类型,那么从执行效果上来说,是要更费事的,毕竟一个int变量,你不直接操纵它,而要绕个弯通过它的地址来操作,又费空间又费时间。所以就设计了这么一 种途径。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-625437/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5765974