欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

值类型转换为引用类型——(装箱、拆箱)

程序员文章站 2022-05-06 09:33:50
...

装箱(Boxing)和拆箱(Unboxing)是C#类型系统中重要的概念。它允许将任何类型的数据转换为对象,同时也允许任何类型的对象转换到与之兼容的数据类型。

1.装箱

装箱转换是指将一个值类型的数据隐式地转换成一个对象类型(object)的数据。
对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用

int i=20;
object o=i;

值类型转换为引用类型——(装箱、拆箱)

2. 拆箱

反之,就是拆箱。如果已经知道了object中存放的是int类型,那么拆箱就能够成功,否则可能会出现类型转换异常

int i = 10;
Object obj = i;
int j = (int)obj;

值类型转换为引用类型——(装箱、拆箱)

值类型与引用类型

1、值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct)。
2、引用类型包括类、数组、接口、委托、字符串等。

装箱拆箱的性能影响

从原理上可以看出,装箱时,生成的是全新的引用对象,这会有时间损耗,也就是造成效率降低。
所以,应该尽量避免装箱。

相关标签: 数据结构 C#