以下哪一种使用Boxing和Unboxing策略?
发布于 2014-05-20 04:50:20
数组列表不是强类型集合。它将存储不同数据类型或相同数据类型的值。因此,数组列表使用装箱解除装箱技术。
Boxing值类型(int、char等)的隐式转换对于一个引用类型(对象),称为Boxing。
Unboxing相同引用类型的显式转换(可以通过装箱过程创建);返回到值类型称为取消装箱。
Exp-// int (值类型)是在堆栈上创建的
int stackVar = 12; // the = int在堆上创建(引用类型)
object boxedVar = stackVar; // unboxed = boxed从堆中取消装箱,并分配给int堆栈变量
int unBoxed = (int)boxedVar;避免拳击
发布于 2014-05-20 04:53:38
当值类型被移动到引用类型时,它被称为装箱。反之亦然,被称为“去拳击”。
下面是装箱和取消装箱的示例代码,其中整数数据类型转换为object,反之亦然。
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
发布于 2014-05-20 05:54:59
在使用ArrayList时,与装箱和取消装箱相比,数组具有更多的开销,并且比ArrayList强类型,效率更高。
https://stackoverflow.com/questions/23751135
复制相似问题