2次元配列

 前節まで学習した配列はデータが線のように一列に並んでいるため、1次元配列と呼ばれます。これから縦と横に、つまり表のように並べる配列(2次元配列)を見てみましょう。2次元配列は次のように宣言します。

2次元配列宣言の書式
データ型[,] 配列名 = new データ型[要素数指定, 要素数指定];

○ プロジェクト

 次のようにプロジェクトを作成してください。今回は、プログラムの入力のみを試します。実行してもメッセージ等は表示されません。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 TwoDimensionalAarray1

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. static void Main(string[] args)
  2. {
  3.  //配列の宣言
  4.  int[,] data = new int[3, 4];
  5. }

○ 解説

 14行目で2次元配列を宣言しています。縦3×横4の配列が用意されます。4つの要素を持つ配列が3つあるようなイメージです。

2次元配列の宣言
2次元配列の宣言

 次に2次元配列に値を代入する方法を見てみましょう。

2次元配列へデータ代入の書式
配列名[インデックス番号, インデックス番号] = ;

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 TwoDimensionalAarray2

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. static void Main(string[] args)
  2. {
  3.  //配列の宣言
  4.  int[,] data = new int[3, 4];
  5.  //配列に値を代入
  6.  data[0, 2] = 100;
  7.  data[1, 0] = 200;
  8.  data[2, 3] = 300;
  9.  //配列の中身を表示
  10.  Console.WriteLine(data[0, 0]);
  11.  Console.WriteLine(data[0, 1]);
  12.  Console.WriteLine(data[0, 2]);
  13.  Console.WriteLine(data[0, 3]);
  14.  Console.WriteLine();
  15.  Console.WriteLine(data[1, 0]);
  16.  Console.WriteLine(data[1, 1]);
  17.  Console.WriteLine(data[1, 2]);
  18.  Console.WriteLine(data[1, 3]);
  19.  Console.WriteLine();
  20.  Console.WriteLine(data[2, 0]);
  21.  Console.WriteLine(data[2, 1]);
  22.  Console.WriteLine(data[2, 2]);
  23.  Console.WriteLine(data[2, 3]);
  24.  Console.ReadLine();
  25. }

○ 実行結果

0
0
100
0

200
0
0
0

0
0
0
300

○ 解説

 17行目では0番の配列の2番の要素に「100」を代入しています。 18行目では1番の配列の0番の要素に「200」を代入しています。 19行目では2番の配列の3番の要素に「300」を代入しています。他の要素は配列が用意されたときに設定される初期化の状態のままです。

2次元配列に代入
2次元配列に代入

 次に、2次元配列での初期化の方法を学習しましょう。

2次元配列初期化の書式
データ型[,] 配列名 = { {値1, 値2, }, {値1, 値2, } };

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 TwoDimensionalAarray3

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. static void Main(string[] args)
  2. {
  3.  //配列の初期化
  4.  int[,] ary = { { 10, 20, 30, 40 }, { 100, 200, 300, 400 } };
  5.  //配列を表示
  6.  Console.WriteLine(ary[0, 0]);
  7.  Console.WriteLine(ary[0, 1]);
  8.  Console.WriteLine(ary[0, 2]);
  9.  Console.WriteLine(ary[0, 3]);
  10.  Console.WriteLine(ary[1, 0]);
  11.  Console.WriteLine(ary[1, 1]);
  12.  Console.WriteLine(ary[1, 2]);
  13.  Console.WriteLine(ary[1, 3]);
  14.  Console.ReadLine();
  15. }

○ 実行結果

10
20
30
40
100
200
300
400

○ 解説

 14行目では2次元配列の宣言と同時に値を格納しています。初期化の場合は配列の要素数を指定する必要はありません。1つの配列に初期化する値を「{}」内で指定し、それをさらにカンマ区切りで複数指定します。

2次元配列の初期化
2次元配列の初期化

 次に、2次元配列の要素数を確認してみましょう。配列の要素数は「配列名.Length」で確認できます。2次元配列の場合はどのような結果が出るのでしょうか。

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 TwoDimensionalLength

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. static void Main(string[] args)
  2. {
  3.  //配列の宣言
  4.  int[,] data = new int[2, 3];
  5.  //配列の要素数を表示
  6.  Console.WriteLine("要素数: {0}", data.Length);
  7.  
  8.  //配列の次元数を表示
  9.  Console.WriteLine("配列の次元: {0}", data.Rank);
  10.  //2次元配列内の配列数を表示
  11.  Console.WriteLine("配列数: {0}", data.GetLength(0));
  12.  
  13.  //2次元配列内の一つの配列の要素数を表示
  14.  Console.WriteLine("1つの配列の要素数: {0}", data.GetLength(1));
  15.  Console.ReadLine();
  16. }

○ 実行結果

要素数: 6
配列の次元: 2
配列数: 2
1つの配列の要素数: 3

○ 解説

 17行目で配列の要素数を取得していますが、配列全体の要素数を取得できます。配列一つ一つの要素数を調べるには別の方法を使います。

 20行目で配列の次元数を取得しています。「配列名.Rank」で配列の次元数を取得できます。今回は2次元配列のため「2」と出力されます。23行目では2次元配列内の配列数を取得しています。「配列名.GetLength()」を使います。その「()」の中に2次元配列内の何次元の要素数を取得したいかをセットします。その次元数は「0」からカウントされているので、「()」内に「0」と指定すると配列数を取得できます。また、26行目のように「()」内に「1」と指定すると、配列一つ一つの要素数を取得することができます。

前へ   次へ