木子屋 Dnawo's BLOG

C#的装箱和拆箱

👤 dnawo 📅 2008-06-30 👁 4212 👍 0 💬 0 🔄 《ASP.NET 2.0 开发指南》
装箱和拆箱是C#类型系统的核心。通过装相和拆箱操作,能够在值类型和引用类型中架起一座桥梁。换言之,可以轻松实现值类型与引用类型的互相转换。装箱和拆箱能够统一考察类型系统,任何类型的值最终都可以按照对象进行处理。

1.装箱

装箱的核心是把值类型转换为对象类型,或者转换为由值类型执行的接口类型。把一个值类型的值装箱,也就是创建一个对象并把这个值赋给这个对象。常见的装箱转换有4种:

·从任何值类型转换为对象类型;
·从任何值类型转换为System.ValueType类型;
·从任何值类型转换为值类型实现的任何接口类型;
·从任何枚举类型转换为System.Enum类型;

需要注意的是,装箱转换意味着复制一个欲被装箱的值。这与从引用类型转换为对象类型有着很大的不同。在后者中,转换后的值继续引用同一实例,只是将它当成对象类型而已。

下面举例说明装箱操作的实现:

int i = 100;
object obj = i;

2.拆箱

拆箱相对于装箱是一个相反的过程,其核心是将引用类型转换为值类型,或者是将一个接口类型转换为一个实现该接口的值类型。常见的拆箱操作有4种:

·从对象类型转换为任何值类型;
·从System.ValueType类型转换为任何值类型;
·从任何接口类型转换为实现该接口的任何值类型;
·从System.Enum类型转换为任何枚举类型;

拆箱的过程分为两个步骤:一是检查对象实例是否是给定的值类型的装箱值;二是将值从对象实例中复制出来。下面列举一个简单的拆箱操作实现。

int i = 100;
object obj = i;
int j = (int)obj;


摘自:郝刚.2006.《ASP.NET 2.0 开发指南》.人民邮电出版社.53~54

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 母版页的应用范围 下一篇 → 使用类设计器设计类