C#で実行されるクラスの割り当てがあります。完全なC#初心者なので、最初にJavaでプロジェクトを実行し、現在C#に変換しようとしています。次の関数があり、次のコンパイラエラーが発生します。
エラー:無効なランク指定子:予期される '、'、または ']'次の行:
int[][] grid=new int[g.cols][g.rows];
VisualStudioはg.rowsのgに下線を引いています
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#で多次元配列を読んでも役に立たなかったようです。
public int[][] getConvergenceCounts(MandelbrotGrid g){
int[][] grid=new int[g.cols][];
for(int x=0;x<g.cols;x++){
int[x] = new int[g.rows]
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;
}
ギザギザの配列を使用したい場合は、@ Frankによる解決策が必要な方法です。ギザギザの配列を開始するときに両方の次元を宣言することはできません。C#では、行の次元が等しくないと想定しているためです。 @Doughnutのソリューションでは、行列型のソリューション(これはそうです)がある場合は多次元配列法が適していますが、C#は1次元配列用に最適化されており、時間コストを節約するためにギザギザの配列オプションを使用することもできます。このため、多次元配列で多くの操作を実行する場合は、行を入力するときにギザギザの配列を初期化し、行の長さを個別に指定する必要があります。
public int[][] getConvergenceCounts(MandelbrotGrid g)
{
int[][] grid=new int[g.cols][];
for(int x=0;x<g.cols;x++){
grid[i] = new int[g.rows];
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;
}