您的位置:首页 > 编程语言 > C#

C#装箱和拆箱(装箱和拆箱对应用程序性能的影响)

2012-11-24 19:22 405 查看
一、装箱和拆箱到底是什么?

装箱(box):把值类型对象转为引用类型的对象;

拆箱(unbox):把引用类型对象转为值类型的对象。

二、装箱和拆箱的实际运用

下面是我们常写的代码,那么在这个过程中,装箱和拆箱到底是怎么转换的呢?

int n = 2;

object obj = (object)n;//装箱,把数值类型int转换为引用类型object对象的。

int m = (int)obj;//拆箱,把引用类型的object转换为int类型。

我们可以看看C#代码被编译为中间语言IL,就很清楚装箱和拆箱的过程:



三、实际编码过程中到底哪些是装箱和拆箱呢?

1、引用类型之间不属于装箱和拆箱,装箱、拆箱必须是: 值类型→引用类型 或 引用类型→值类型。

Person p=new Student();//这个叫隐式类型转换,不叫装箱。

Student stu=(Student)p;//这个叫显示类型转换,不叫拆箱。

2、方法重载时,如果具有该类型的重载,那么就不叫拆箱或装箱。
int n=10; Console.WriteLine(n);//没有发生装箱,因为方法重载。

3、接口与值类型之间的装箱与拆箱。
int n = 2;

IComparable c = n;

int m = (int)c;

Console.WriteLine(m.ToString());

四、频繁装箱和拆箱会对程序性能造成什么影响?

频繁的拆箱和装箱会对系统性能造成什么影响?下面我们就从运行时间方面对其性能进行分析,





从上面运行的时间我们可以清楚的看出频繁的进行装箱和拆箱对引用程序运行的时间有很大的区别,因此,要写一个高效的高性能的软件,要注意装箱和拆箱对应用程序造成的影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: