C# 拆箱与装箱 要严格控制,数量多起来严重影响效率

int i = 5;

object o = i;

int j = (int)o;

IComparer x = 5;

1. o的对象必须为一个引用,而数字5不是,则发生了装箱: 运行时将在堆上创建一个包含(5)的对象,o的值是对该对象的一个引用,该对象的值是原始值的一个副本,改变i的值不会改变箱内的值.

拆箱很明显.

2. 当对一个类型的值调用ToString. Equals 或GetHashCode方法时,如果该类型没有覆盖这些方法,也会发生装箱

3. 将值作为接口表达式使用时,把它赋值给一个接口类型的变量,或者把它作为接口类型的参数来传递,也会装箱

 

posted @ 2016-03-09 13:27  会飞灬的鱼  阅读(377)  评论(0编辑  收藏  举报