在c#中,当一个int存储在List <int>或int []中时,该int仍然在堆栈上还是被装箱/移动到堆?</int>

时间:2011-07-19 21:31:38

标签: c# .net

我理解int和所有值类型都存储在堆栈中。 Int可以装入对象,然后意味着int是堆上的存储。但是当int存储在List或int []中时会发生什么?

我知道List ofT是一个类/引用类型/堆存储类型 - 这是否意味着列表中的int被装箱到堆上?

谢谢

3 个答案:

答案 0 :(得分:2)

使用通用List<int>类型时无需装箱。

答案 1 :(得分:1)

如果它存储在类型化列表

中,则不会装箱

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

“如果值类型用于类型T,则编译器会专门为该值类型生成List类的实现。这意味着在使用该元素之前,不必对List对象的列表元素进行装箱并且在创建了大约500个列表元素之后,保存的内存不是装箱列表元素大于用于生成类实现的内存。“

答案 2 :(得分:0)

  

我知道List ofT是一个类/引用类型/堆存储类型 - 这是否意味着列表中的int被装箱到堆上?

int放置在堆上分配的存储空间与装箱int不同。

拳击是指int单独放置在自己的object包装中。这不会发生在通用List<int>中,而是发生在ArrayList

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx