编译器错误:无效的排名说明符:二维数组初始化中的预期’,’或’]’

我有一个要在C#中完成的类的作业。 作为一个完整的C#新手,我首先用Java做了这个项目,现在我正在尝试将它转换为C#。 我有以下function,导致以下编译器错误。

错误: 无效的排名说明符:以下行中的预期’,’或’]’

int[][] grid=new int[g.cols][g.rows]; 

Visual Studio正在强调g .rows

 public int[][] getConvergenceCounts(MandelbrotGrid g){ int[][] grid=new int[g.cols][g.rows]; for(int x=0;x<g.cols;x++){ for(int y=0;y<g.rows;y++){ double tx=x*(double)3/400-1.5; double ty=y*(double)3/400-1.5; grid[x][y]=getConvergenceCount(new Complex(ty,tx)); } } return grid; } 

我不知道我在这里做错了什么,在C#中阅读多维数组似乎没有帮助。

C#编译器认为您正在尝试声明锯齿状数组 ,并且这样做不正确。 锯齿状数组是一个数组数组 ,其中主数组中包含的每个数组可以具有不同数量的元素。 锯齿状数组声明如下:

 int[][] jaggedArray = new int[numElements][]; 

这将创建一个可以在其中保存“ numElements ”整数数组的数组。

您想声明一个多维数组 ,例如:

 int[,] grid = new int[g.cols, g.rows]; 
 public int[][] getConvergenceCounts(MandelbrotGrid g){ int[][] grid=new int[g.cols][]; for(int x=0;x 

如果你想使用锯齿状数组,那么@Frank的解决方案就是你需要做的方法。 启动锯齿状数组时,不能声明两个维度​​,因为C#假设您的行具有不相等的维度。 在@ Donut的解决方案中,如果您有矩阵类型解决方案(这是),多维数组方法是一个很好的解决方案,但是C#针对单维数组进行了优化,您可能仍希望使用锯齿数组选项以节省时间成本。 因此,如果要在多维数组上执行许多操作,则应在输入行时初始化锯齿状数组,然后单独指定行长度。

 public int[][] getConvergenceCounts(MandelbrotGrid g) { int[][] grid=new int[g.cols][]; for(int x=0;x