您的位置:首页 > 其它

装箱与拆箱-好汉001

2013-10-19 14:46 218 查看
问题:

什么是装箱与拆箱?

区别是什么?

作用是什么?

代码实现例子?

解答:
第一点:

装箱就是把值类型转换成引用类型的过程;反之拆箱就是引用类型转换在值类型的过程;

值类型就是变量的数据存储在栈内存,就是变量名就是包括了数据;引用类型则是变量数据地址存在栈,地址指向堆内存,堆内存储存着真正数据,变量名是一个地址,指向堆内存地始位置;

值类型变量当超出作用域时,内存自动回收,与堆则要等垃圾回收;

值类型有:结构类(数据类型,bool,用户自定义结据),杖举,可空类型。

引用类型有:自定义类,接口等;

第二点;

装箱可以explicit或implicit; 如object o = 3;object oo = (object)4;

拆箱则要显式:object o = 3; int a = (int)o;

装箱与拆箱一般在我们不知不觉中产生,如:

data d = new data();//值类型;

d.a = 4;

ArrayList al = new ArrayList();

al.Add(d);//产生装箱过程,刚值类型数据拷贝一份进堆;

data dd =(data)al[0];//拆箱,从堆中,拷贝一份数据进栈;

dd.a = 5;

可以看出,这样对性能有影响;减少出现这样的情况;

第三点:

装箱与拆箱可解决部分不确定类型的影响,只要合适地转换就能解决部分问题;但现在流行用泛型解决问题;

ps:待各位指向不足与提供更深入探讨;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: