配列の配列・ネストされた配列の宣言・初期化・代入・参照 - C#

C#での配列の配列・ネストされた配列の宣言、初期化、代入、参照のコードについて紹介します。

概要

C#では2次元配列や多次元配列を定義することもできますが、"配列の配列"のように、ネストされた配列も定義できます。
配列の配列を「ジャグ配列」 (Jagged Array) と呼ぶこともあります。

書式

以下の書式となります。

宣言

配列の配列(1段のネスト)の場合
(型名)[][] (変数名);

n段のネストの場合
(型名)[][]....[] (変数名);

初期化

1段目の初期化
(変数名) = new (型名)[(配列要素数)][];

2段目の初期化
(変数名)[(1段目の添え字)] = new (型名)[(配列要素数)];

n段目の初期化
(変数名)[n][m][l]...[k] = new (型名)[(配列要素数)];

代入

(変数名)[(1段目の添え字)][(2段目の添え字)] = (値);
(変数名)[(1段目の添え字)][(2段目の添え字)] ... [(n段目の添え字)] = (値);

記述例

宣言

int[][] data;
int[][][] values;

初期化

data = new int[4][];

for (int i=0; i<4;i++){
  data[i] = new int[3];
}
values = new int[3][][];

for (int i=0; i<3;i++){
  values [i] = new int[2][];

  for (int j=0; j<2;j++){
    values [i][j] = new int[4];
  }
}

代入

  data[2][3] = 120;
  values[1][2][3] = 4;

コード例

以下のコードでは、3×4の配列の配列を宣言し初期化します。
private void Form1_Load(object sender, EventArgs e)
{
  int[][] matrix = new int[3][];
    for (int i=0; i<4;i++) matrix[i] = new int[4];

    matrix[2][2] = 1;
}
参考
多次元配列を定義する方法はこちら
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-02-01
iPentec all rights reserverd.