ジャグ配列
配列の配列
C# には、配列の中に配列を収めるという概念が存在します
配列の配列は、親の配列と子の配列という関係で結ばれ、動的なプログラムの生成を助けます
この「配列の配列」のことをジャグ配列と呼びます
配列の配列は、配列の要素として配列を含むことができるのです
概念的に多次元配列と類似していますが、技術的には大きな違いがあります
親配列は、子配列への参照を要素として格納し、常に子配列へのポインタとして働くのです
この参照を別の参照にするだけで、異なる配列を参照するようになる柔軟性を持ちます
一貫したアドレスでデータを格納する多次元配列と柔軟性において違いがあります
ジャグ配列の生成には、次元指定子 [] を二つ続けて記述します
もし、配列の配列の配列を作りたければ、三つ続けて [] を指定します
int[][] iValue; //配列の配列
int[][][] iValue; //(配列の配列)の配列
それぞれの配列には、子配列への参照を含むことができます
もちろん、型は互換性がある参照型でなければなりません
class Test {
public static void Main() {
string[][] str = new string[2][];
str[0] = new string[] {"Kitty on your lap" , "Tokyo mew mew"};
str[1] = new string[] {"Silver Gene" , "Di Gi Charat" , "Words Worth"};
for (int i = 0 ; i < str.Length ; i++)
for (int j = 0 ; j < str[i].Length ; j++)
System.Console.WriteLine(str[i][j]);
}
}
ご覧の様に、多次元配列に非常に近いものがあります
たしかに、親配列は子配列を持つという多面的な関係を持ちますが
多次元配列のようにそれぞれのアドレスは直接的な関係はないのです
str[0] は要素として {"Kitty on your lap" , "Tokyo mew mew"} 配列への参照を持つのです
つまり str[0][1] とすれば "Tokyo mew mew" が参照されることになります