我試圖將電子表格數據捕獲到二維數組中。我正在使用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