在c#中,当int型存储在List或者int[]是int仍然在堆栈上,还是它被装箱/移动到堆中
本文关键字:int 移动 堆栈 存储 List 或者 | 更新日期: 2023-09-27 18:02:45
我理解int和所有值类型一样,都存储在堆栈上。Int型可以被装箱成对象,这意味着Int型是堆上的存储。但是当int型存储在List或int[]中时会发生什么呢?
我知道List ofT是类/引用类型/堆存储类型-这是否意味着列表中的int类型被装箱到堆上?
谢谢
使用通用的List<int>
类型时不需要装箱
如果存储在类型化列表中,则不加框
http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx"如果一个值类型用于类型T,编译器将为该值类型生成List类的具体实现。这意味着list对象的列表元素在可以使用之前不必装箱,并且在创建了大约500个列表元素之后,保存的非装箱列表元素的内存大于用于生成类实现的内存。"
我知道List ofT是类/引用类型/堆存储类型-这是否意味着列表中的int类型被装箱到堆上?
在堆上分配的存储中放置int
与将int
装箱不同。
int
单独放置在其自己的object
包装器中。这不会发生在通用的List<int>
中,但会发生在ArrayList
中。
http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx