Eines ist ein Array von Arrays und eines ist ein 2d-Array. Ersteres kann zackig sein, letzteres ist gleichmäßig.
Das heißt, ein double[][]
gültig sein kann:
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];
Da jeder Eintrag in dem Array ein Verweis auf ein Array von double
. Mit einem gezackten Array können Sie eine Zuweisung an ein Array vornehmen, wie Sie es in Ihrem zweiten Beispiel wünschen:
x[0] = new double[13];
Beim zweiten Element können Sie, da es sich um ein einheitliches 2D-Array handelt, kein 1D-Array einer Zeile oder Spalte zuweisen, da Sie sowohl die Zeile als auch die Spalte indizieren müssen, was Sie auf eine einzige double
:
double[,] ServicePoint = new double[10,9];
ServicePoint[0]... // <-- meaningless, a 2d array can't use just one index.
UPDATE :
Um zu klären, basierend auf Ihre Frage, der Grund, warum Ihre #1 hatte einen Syntaxfehler ist, weil Sie diese hatten:
double[][] ServicePoint = new double[10][9];
Und Sie können den zweiten Index zum Zeitpunkt der Konstruktion nicht angeben. Der Schlüssel ist, dass ServicePoint ist no ein 2d-Array, sondern ein 1d-Array (von Arrays), und da Sie also ein 1d-Array (von Arrays) erstellen, geben Sie nur einen Index an:
double[][] ServicePoint = new double[10][];
Wenn Sie dann jedes Element im Array erstellen, ist jedes dieser Elemente ebenfalls ein Array, also dann können Sie deren Abmessungen angeben (die unterschiedlich sein können, daher der Begriff zerklüftet Array):
ServicePoint[0] = new double[13];
ServicePoint[1] = new double[20];