似て非なる配列 §
2次元配列は添え字を2つ付ける配列です。(例: array1[1, 2])
配列の配列は添え字を2つ付ける配列です。(例: array2[1][2])
区切り文字が違うだけで、とても似ています。
しかし、この2つは全くの別物です。
混同しないように注意しましょう。
具体的に何が違うのでしょう。
2次元配列は縦横に広がった一つのオブジェクトです。オブジェクトの数は1つです。
配列の配列は配列というオブジェクトを多数収容したオブジェクトです。オブジェクトの数は多数です。
ですから、new演算子を使う回数が全く違います。
サンプルソースで確認してみましょう。
罠の数々 §
- 配列の配列は2番目の添え字の上限を変化できる。new int[][] { new int[2], new int[3], new int[5] }のように書けば良い。しかし、2次元配列は上限を変更できない。両者の違いが初期化だけでは無いのだ
参考リンク §
多次元配列 (C# プログラミング ガイド)
ジャグ配列 (C# プログラミング ガイド)
2次元配列の話題は多次元配列の説明に含まれること。配列の配列はジャグ配列と呼ばれていることを上記リンクから確かめてみよう。
ジャグ配列と多次元配列を混在させる方法も上記リンクに含まれる。実際に見て、どんな世界が広がっているのか見てみよう。
リポジトリ §
https://github.com/autumn009/cshowto
Array §
using System;
class Program
{
static void Main()
{
// 2次元配列
int[,] array1 = new int[3, 3];
array1[1, 2] = 123;
Console.WriteLine($"array1[1, 2] = {array1[1, 2]}");
// 配列の配列
int[][] array2 = new int[][] { new int[3], new int[3], new int[3] };
array2[1][2] = 123;
Console.WriteLine($"array2[1][2] = {array2[1][2]}");
}
}
実行結果
array1[1, 2] = 123
array2[1][2] = 123