我试图将电子表格数据捕获到二维数组中。我正在使用VSTO。OutofMemory异常对象数组大小
int rc = 1048576;
int cc = 1638;
string[,] arr = new string[rc, cc];
最后一行抛出内存不足异常。我想告诉用户只能显示'X'元素的信息。
Checked MSDN and there is a row count limit mentioned of 16,777,216。数据表没有列数限制。不能找到二维数组的限制。
我的问题不是为什么例外。我所寻找的是如果你正在做VSTO的开发,并有拍摄工作表中数据表来执行内存联接等等,你需要做到这一点:从
string[,] arr = new string[rc, cc];
Microsoft.Office.Interop.Excel.Range selection
arr = selection.Value as string[,];
,然后复制数据该数组转换为数据表。现在什么是用户应该选择的元素数量的理想限制。所以我可以设置rowcount/columncount lmits并在选择超过这个标准时显示消息。
我downvote感官表明您真的不应该指望什么不同,当您尝试分配的内存块的机器的整个地址空间的大小。 – Wug
OP不应该对结果感到惊讶,但我不确定我是否同意所有的预测。这是一个公平的问题,简单的解释就足够了。 –
也许吧。但这个问题似乎表明研究工作很差。这个例外确切地表明了什么是错误的,从数学的角度来看它是相当明显的,如果你将要分配20亿美元的东西,那最好是小得多。 – Wug