以下哪项使用Boxing
和Unboxing
策略?
答案 0 :(得分:1)
数组列表不是强类型集合。它将存储不同数据类型或相同数据类型的值。 所以阵列列表使用装箱拆箱技术。
Boxing
将值类型(int,char等)隐式转换为引用类型(对象),称为Boxing。
Unboxing
显式转换相同的引用类型(可以通过装箱过程创建);返回值类型称为拆箱。
Exp-
//在堆栈上创建了int(值类型)
int stackVar = 12;
//在堆(参考类型)
上创建Boxing = intobject boxedVar = stackVar;
// Unboxing = boxed int从堆中取消装箱并分配给int stack变量
int unBoxed = (int)boxedVar;
避免装箱取消装箱
答案 1 :(得分:0)
当值类型移动到引用类型时,它被称为装箱。反之亦然被称为拆箱。
下面是装箱和拆箱的示例代码,其中整数数据类型转换为对象,反之亦然。
int i = 1;
object obj = i; // boxing
int j = (int) obj; // unboxing
最好避免在必须装箱次数很多的情况下使用值类型,例如在非泛型集合类(如System.Collections.ArrayList)中。您可以使用诸如System.Collections.Generic.List之类的泛型集合来避免对值类型进行装箱。拳击和拆箱是计算上昂贵的过程。装箱值类型时,必须创建一个全新的对象。这可能比简单的参考分配长20倍。拆箱时,铸造过程的时间可能是作业的四倍。
相关主题
http://msdn.microsoft.com/en-IN/library/ms173196.aspx
http://msdn.microsoft.com/en-IN/library/yz2be5wk.aspx
http://questpond.blog.com/2014/03/04/net-interview-questions-what-is-concept-of-boxing-and-unboxing
答案 2 :(得分:0)
使用ArrayList时,装箱和拆箱会产生更多开销,Array类型强,比ArrayList更有效。