double[][] ServicePoint = new double[10][9]; // <-- gives an error (1)
double[,] ServicePoint = new double[10,9]; // <-- ok (2)
それらの違いは何ですか?(1)エラーが発生しますが、その理由は何ですか?
そして
double d = new double[9]
ServicePoint[0] = d;
(2)を使用するとエラーが発生します。なぜでしょうか?
ベストアンサー1
1 つは配列の配列で、もう 1 つは 2 次元配列です。前者はギザギザになる可能性があり、後者は均一です。
つまり、次double[][]
のように有効になります。
double[][] x = new double[5][];
x[0] = new double[10];
x[1] = new double[5];
x[2] = new double[3];
x[3] = new double[100];
x[4] = new double[1];
配列内の各エントリは の配列への参照であるためですdouble
。不規則配列を使用すると、2 番目の例のように配列への割り当てを行うことができます。
x[0] = new double[13];
2 番目の項目は均一な 2 次元配列であるため、行と列の両方にインデックスを付ける必要があり、1 つの になるため、行または列に 1 次元配列を割り当てることはできませんdouble
。
double[,] ServicePoint = new double[10,9];
ServicePoint[0]... // <-- meaningless, a 2d array can't use just one index.
アップデート:
あなたの質問に基づいて明確にすると、#1 に構文エラーがあった理由は、次のとおりです。
double[][] ServicePoint = new double[10][9];
また、構築時に 2 番目のインデックスを指定することはできません。重要なのは、ServicePoint が 2 次元配列ではなく、1 次元配列 (配列の) であるため、1 次元配列 (配列の) を作成するので、1 つのインデックスのみを指定することです。
double[][] ServicePoint = new double[10][];
次に、配列内の各項目を作成すると、それらもそれぞれ配列になるため、次元を指定できます (次元は異なる場合があるため、ギザギザ配列と呼ばれます)。
ServicePoint[0] = new double[13];
ServicePoint[1] = new double[20];