编译器错误:无效的排名说明符:二维数组初始化中的预期’,’或’]’
我有一个要在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