c#中列表<string>的最大数据限制是多少?

Pra*_*uja 53 .net c#

我可以向List添加多少个值?

例如:

List<string> Item = runtime data
Run Code Online (Sandbox Code Playgroud)

数据的大小不固定.它可能是10 000或超过1 000 000.我用谷歌搜索但没有找到确切的答案.

Luk*_*keH 76

List<T>理论上,当前实现中可以存储的最大元素数量Int32.MaxValue- 仅超过20亿.

在当前的CLR的Microsoft实现中,最大对象大小限制为2GB.(有可能其他实现,例如Mono,没有这个限制.)

您的特定列表包含字符串,它们是引用类型.引用的大小为4或8个字节,具体取决于您是在32位还是64位系统上运行.这意味着你可以存储的字符串数量的实际限制在32位上大约为5.36亿,在64位上为2.68亿.

实际上,在达到这些限制之前,很可能会耗尽可分配内存,特别是如果您在32位系统上运行.

  • 除了固定的上限之外,重复创建和释放大型数组会导致不一致的分配,即使内存实际可用,更合理的分配(大约几百MB)也会导致OutOfMemoryException.如果您必须处理非常大的集合,这将影响您的设计. (3认同)

Flo*_*oyd 10

2147483647因为List之外的所有函数都使用int.

来自mscorlib的来源:

private T[] _items;
private int _size;

public T this[int index]
{
  get
    {
      //...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 2,147,483,647远大于2.68亿. (2认同)