在C#中哪一个包含装箱和拆箱策略,阵列或arraylist?

时间:2014-05-20 04:40:20

标签: c# .net arrays arraylist

以下哪项使用BoxingUnboxing策略?

  • 阵列
  • 的ArrayList

3 个答案:

答案 0 :(得分:1)

数组列表不是强类型集合。它将存储不同数据类型或相同数据类型的值。 所以阵列列表使用装箱拆箱技术。

Boxing

将值类型(int,char等)隐式转换为引用类型(对象),称为Boxing。

Unboxing

显式转换相同的引用类型(可以通过装箱过程创建);返回值类型称为拆箱。

Exp-

//在堆栈上创建了int(值类型)

int stackVar = 12; 

//在堆(参考类型)

上创建Boxing = int
object 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更有效。

相关问题