什么是数据的最大限制到列表<string>在C#中?

我可以将多less个值添加到列表中?

例如:

List<string> Item = runtime data 

数据的大小不固定。 可能是10000或者1000000以上。我已经使用谷歌search,但还没有find确切的答案。

List<T>的当前实现中可以存储的元素的最大数量理论上是Int32.MaxValue ,只有20多亿。

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

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

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

2147483647因为closures列表的所有function都使用int。

来自mscorlib:

 private T[] _items; private int _size; public T this[int index] { get { //... } } 

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

如果你做了一些清单操作,理论上会更加复杂。

我会说,如果你有大量的项目在.net 4.0并行集合thnink这将使你的列表操作更加敏感。