C# 如何在运行时分配二维数组的大小?

C# 如何在运行时分配二维数组的大小?,c#,arrays,multidimensional-array,initialization,indexoutofrangeexception,C#,Arrays,Multidimensional Array,Initialization,Indexoutofrangeexception,我有一个这样定义的二维数组 int[,] array1 = new int[,]{{1,0},{3,5},{2,5},{8,7}}; 或者我可以输入任何其他二维数组作为array1,也许 array1 = new int[6,2]... 我想定义另一个array2,它也是一个二维数组,我需要array2在两个维度上的长度与array1相同。我无法将array2定义为 new int[array1.GetLength(0), array1.GetLength(1)] 我如何定义它?如果我在

我有一个这样定义的二维数组

int[,] array1 = new int[,]{{1,0},{3,5},{2,5},{8,7}}; 
或者我可以输入任何其他二维数组作为array1,也许

array1 = new int[6,2]...
我想定义另一个array2,它也是一个二维数组,我需要array2在两个维度上的长度与array1相同。我无法将array2定义为

new int[array1.GetLength(0), array1.GetLength(1)]
我如何定义它?如果我在代码下面运行时将其保留为
newint[,]
,我会从索引异常中得到一个异常,我认为这个异常是有意义的

for (int i = 0; i < array1.GetLength(0); i++)
    for (int j = 0; j < array1.GetLength(1); j++)
    {
        if (array1[i, j] == -1)
            array2[i, j] = i+j;
    }
for(int i=0;i
您得到索引异常是因为您的
新int[,]
至少没有
数组1
大。与您的声明相反,您可以使用array1标注的长度定义array2。使用:

int[,] array2 = new int[array1.GetLength(0),array1.GetLength(1)];

这会将
array2
设置为与
array1
相同的维度,并且
array1
的任何有效元素都将对
array2
有效,因此不会出现索引异常

请注意,OP表示此代码不适用于他们。(因此需要一些额外的解释)。@spspli如果这对您不起作用,请告诉我您得到了什么错误,我也可以调整答案以解决这个问题。是的,我得到了一个错误:需要一个常量值;但我实际上是在VisualStudio的模拟器IDE中运行代码的。它在我的模拟器中抛出了这样一个错误…在我阅读了您的回复后,我尝试在visual studio中运行相同的代码,它没有错误。模拟器一定有问题。谢谢你的回复!