C# 列表中可以存储的元素是否有限制?
列表中可以存储的元素是否有限制?或者您可以一直添加元素直到内存不足?当前的C# 列表中可以存储的元素是否有限制?,c#,.net,collections,ilist,C#,.net,Collections,Ilist,列表中可以存储的元素是否有限制?或者您可以一直添加元素直到内存不足?当前的List实现使用Int32无处不在-为其Count属性构建其后备数组,作为索引器及其所有内部操作-因此当前理论最大值为Int32.MaxValue项(2^31-1或2147483647) 但是.NET framework也有2GB的最大对象大小限制,因此您只能使用单字节项目列表(如List或List)接近项目限制 实际上,在达到这些限制之前,您可能会耗尽连续内存。理论上,这意味着您只能随机访问Int32.MaxValue,
List
实现使用Int32
无处不在-为其Count
属性构建其后备数组,作为索引器及其所有内部操作-因此当前理论最大值为Int32.MaxValue
项(2^31-1
或2147483647
)
但是.NET framework也有2GB的最大对象大小限制,因此您只能使用单字节项目列表(如List
或List
)接近项目限制
实际上,在达到这些限制之前,您可能会耗尽连续内存。理论上,这意味着您只能随机访问
Int32.MaxValue
,而不是理论上的元素数。@Martinho:目前的实现在任何地方都使用Int32
,所以不仅仅是随机访问被限制在2^31个项目上。(当然,Int32
的内部使用只是一个实现细节,但索引器和Count
等属性是公共契约的一部分。)