第二部分 类型与通用语言运行时----------------读《Microsoft.NET框架程序设计》

来源:互联网 发布:羽毛球比赛编排软件 编辑:程序博客网 时间:2024/04/28 04:04

     拆箱和装箱并不是严格意义上的互反操作.拆箱操作的代价要比装箱操作小许多。拆箱操作仅仅是获取指向对象中包含的值类型部分(数据字段)的指针而已,它不会像装箱操作那样涉及到任何内存字节的拷贝.然而,紧接着拆箱之后典型的操作往往就是字段拷贝,这两个操作合起来与装箱操作才成为真正的互反操作.

     对一个引用类型的拆箱操作通常由以下几步组成:

    1.如果该引用为null,将会抛出一个NullReferenceException异常.

    2.如果该引用指向的对象不是一个期望的值类型的已装箱对象,将会抛出一个InvalidCastException异常.

    3.一个指向包含在已装箱对象中值类型部分的指针被返回。该指针指向的值类型对于引用类型对象通常所具有的附加成员(即一个方法表指针和一个SyncblockIndex)一无所知.实际上,该指针指向的是已装箱对象的为装箱部分.

 

  

原创粉丝点击