如果有机会重写,我会,但无论如何,代码如下:
List<string> foobar;
Run Code Online (Sandbox Code Playgroud)
然后我们将一堆字符串添加到foobar.
在count = 16777216时,我们达到了内存不足的限制.
我的理解是每个字符串的大小不同.确实在查看数据(不是我的数据),大多数是2或3个字符.
c#中数据的最大限制是多少?表示最大限制为:
可以存储在List的当前实现中的最大元素数量理论上是Int32.MaxValue - 仅超过20亿.
然而:
在当前的CLR的Microsoft实现中,最大对象大小限制为2GB.(有可能其他实现,例如Mono,没有这个限制.)
在我的例子中,我有什么,1600万个结果*几个字节?任务管理器显示正在使用的演出,但我有8演出的RAM.
16777216(2 ^ 24)似乎是一个相当具体的价值 - 可疑地像一个限制,但我无法找到任何文件a)支持这个或b)找到解决方法?
任何帮助,将不胜感激.
一些代码:
List<string> returnList = new List<string>();
SqlDataReader dr; // executes a read on a database, have removed that part as that bit works fine
if (dr.HasRows)
{
while (dr.Read())
{
returnList.Add(dr.GetString(0).Trim());
}
}
Run Code Online (Sandbox Code Playgroud)
这是简化的形式,我现在有一些尝试/捕获OOM异常,但这是给我悲伤的实际代码.