我编写了这段代码,但如果我传递的是范围值46542,则会在行中出现内存异常。
long[,] array = new long[range, range];
如何解决这个问题?
int noOfTestCases = Convert.ToInt32(Console.ReadLine());
if(noOfTestCases>=1 && noOfTestCases<=100)
{
for(int i=0; i<noOfTestCases; i++)
{
Console.WriteLine("Enter the Range");
long range = Convert.ToInt64(Console.ReadLine());
long[,] array = new long[range, range];
}
}
答案 0 :(得分:3)
如何解决这个问题?
选择小于46,341的范围。数组中元素的最大数量为Int32.MaxValue
或2,147,483,647。
由于您正在创建NxN阵列,因此“square”的一侧最大尺寸为Math.Sqrt(Int32.MaxValue)
或46340.950001052
。
答案 1 :(得分:2)
数组中作为索引器的最大大小为System.Int32.MaxValue
,小于某些Int64
个数字。因此,你得到了这个例外。