
###前提・実現したいこと
要素の中身はまだ格納しないで、要素数だけ確保して2次元配列を作成したいと考えています。
例として、5つの行と6つの列から成る2次元配列を作成したいと考えています。
また、objarr[0].Lengthのように、1次元目の要素番号を指定して、その2次元目の配列の長さを取得できたり、
objarr[0][0]のように要素番号を指定して要素を取得できるようにしたいと考えています。
下記のコードで、その要件を満たすものはできたのですが、コードのコメントにも書いたように、
同じ長さの2次元目の配列を作成する場合でも、いちいち1次元目の要素番号を指定して、
それに対応した2次元目の配列を作成しなくてはならないのでしょうか?
ループは使わず、簡潔な書き方はありませんか?
C#
1 //5つの行と6つの列から成る2次元配列の作成する。 2 int[][] objarr = new int[5][]; 3 //ループを使わず、下記5行分をまとめて宣言できないか? 4 objarr[0] = new int[6]; 5 objarr[1] = new int[6]; 6 objarr[2] = new int[6]; 7 objarr[3] = new int[6]; 8 objarr[4] = new int[6]; 9 10 Debug.Log (objarr.Length); //5 11 Debug.Log (objarr[0].Length); //6 12 Debug.Log (objarr[0][0]); //0
理想としては、下記のようなコードで簡潔に作成したいのですが、このコードでは何故かエラーが起きてしまいます。
エラーの原因もよくわかりません。
C#
1//5つの行と6つの列から成る2次元配列の作成する。 2int[][] objarr = new int[5][6];
error CS0178: Invalid rank specifier: expected `,' or `]'
ご教授のほどよろしくお願いします。
###試したこと
下記のような書き方で、5つの行と6つの列から成る2次元配列の作成はできましたが、
この書き方だと何故か、objarr[0].Lengthのように、1次元目の要素番号を指定して、
その2次元目の配列の長さを取得したり、
objarr[0][0]のように要素番号を指定して要素を取得したりすることができません。
C#
1 //5つの行と6つの列から成る2次元配列の作成。 2 int[,] objarr = new int[5, 6]; 3 4 //下記のような書き方をすれば、 5 //1次元目や2次元目の配列の長さを取得できるが、 6 //objarr[0].Lengthのように、1次元目の要素番号を指定して、 7 //その2次元目の配列の長さを指定したい。 8 //あと、objarr[0][0]のように要素にアクセスしたい。 9 Debug.Log(objarr.GetLength(0)); //5 10 Debug.Log(objarr.GetLength(1)); //6 11 12 //Debug.Log (objarr[0].Length); //←何故かエラー。 13 //※行と列を指定してアクセスできない。 14 //Debug.Log (objarr[0][0]); //←何故かエラー。
error CS0178: Invalid rank specifier: expected `,' or `]' error CS0022: Wrong number of indexes `1' inside [], expected `2'

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/19 13:08