C#中的装箱和拆箱的简单理解

Posted zwj-199306231519

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的装箱和拆箱的简单理解相关的知识,希望对你有一定的参考价值。

1.代码:

  int i = 3;
  //装箱
  object obj = i;
  //拆箱
  int y = (int)obj;

2.过程:

  装箱操作分为以下3个步骤:
  (1)内存分配:在托管堆中内存分配内存空间用来存放复制的实际数据
  (2)完成实际数据的复制:将值类型实例的实际数据复制到新分配额内存中
  (3)地址返回,将托管堆中的对象地址返回给引用类型变量

  拆箱操作分为以下3个步骤:
  (1)检查实例:首先检查进行拆箱操作的引用类型是否为null,如果为null抛出异常,如果不为null则继续检查变量是否和拆箱后的类型是统一类型
  (2)地址返回:返回已装箱变量的实际数据部分地址
  (3)数据复制:将托管堆中的实际数据复制到栈中,由于较装箱和拆箱存在数据复制,所以比较耗费资源,最好的用泛型进行编程

以上是关于C#中的装箱和拆箱的简单理解的主要内容,如果未能解决你的问题,请参考以下文章

自动装箱和拆箱的几个细节

装箱和拆箱的性能损耗以及没有装箱和拆箱的性能损耗

c# 泛型为啥能解决装箱拆箱问题

java 啥是拆箱和装箱,拆箱和装箱 嘛用啊???

[C#] 装箱和拆箱(整理中)

全面理解java自动装箱和拆箱(转)