C# の 配列型 (多次元配列)
C# の多次元配列 (矩形配列)
C# では表形式のデータ構造を表すための、多次元配列を定義することができます。
例えば char[,] a = new char[3,2] として配列を作成すると、3 行 2 列の配列になります。
この配列を使う例を示します。
char[,] a = new char[3, 2];
a[0, 0] = 'A';
a[0, 1] = 'B';
a[1, 0] = 'C';
a[1, 1] = 'D';
a[2, 0] = 'E';
a[2, 1] = 'F';
foreach (char c in a)
{
Console.Write(c);
}
// ABCDEF
foreach 文で配列要素を列挙すると、行優先に巡回する形になります。
この形式では列数は一定になり、構造的に長方形 (矩形) の形になるので矩形配列 (Rectangular array) と呼ばれることもあります。
矩形配列の初期値は次のように与えられます。
char[,] a = new char[,] {
{ 'A', 'B' },
{ 'C', 'D' },
{ 'E', 'F' }
};
さらに省略して、次のようにも書けます。
char[,] a = {
{ 'A', 'B' },
{ 'C', 'D' },
{ 'E', 'F' }
};
C# のジャグ配列
C# のもう一つの多次元配列の形式は、ジャグ配列 (jagged array) と呼ばれているものです。配列の要素が配列となる形式です。
ジャグ配列はブラケットを二つ重ねて表記します。
行数は固定長ですが、それぞれの行に保存される配列の長さは決まっていません。このため、要素数によっては図のようにデコボコした形になります。(ジャグは英語で「ギザギザ」などの意味)
char[][] a = new char[3][];
a[0] = new char[] { 'A' };
a[1] = new char[] { 'B', 'C', 'D' };
a[2] = new char[] { 'E', 'F' };
foreach (char[] c in a)
{
Console.WriteLine(c);
}
// A
// BCD
// EF
上記と同様の意味となるジャグ配列の初期化は、次のようにもかけます。
char[][] a = new char[][] {
new char[] {'A'},
new char[] {'B', 'C', 'D'},
new char[] {'E', 'F'}
};
以上、ここでは C# の多次元配列として矩形配列とジャグ配列について説明しました。