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

时间:2010-10-11 13:59:15

标签: c# .net

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

例如:

List<string> Item = runtime data

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

3 个答案:

答案 0 :(得分:71)

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

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

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

实际上,在达到这些限制之前,很可能会耗尽可分配内存,尤其是在32位系统上运行时。

答案 1 :(得分:10)

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

来自mscorlib的来源:

private T[] _items;
private int _size;

public T this[int index]
{
  get
    {
      //...
    }
}

答案 2 :(得分:3)

list.Count()属性是int32,因此它必须是int32的最大限制,但是你的列表如何超过这个限制是一个很好的观察。

如果你做了一些列表操作,那么理论上它就会更加直线。

我想说如果你的.net 4.0中有关于并行集合的大量项目,这将使你的列表操作更具响应性。