【C#】多次元配列とジャグ配列【配列の種類について】

「多次元配列」と「ジャグ配列」について解説します。

宣言の方法

多次元配列とジャグ配列のそれぞれの宣言の方法の例です。

// 多次元配列
int[,] multiArray = new int[2,4];

// ジャグ配列
int[][] jagArray = new int[2][];
jagArray[0] = new int[4];
jagArray[1] = new int[4];

ジャグ配列はC言語などで見る形の多次元配列(配列の配列)です。僕はこちらのほうが馴染み深いです。

多次元配列の書き方の例

// 2次元配列
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// 何次元かを指定した配列
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// 文字列要素の配列
string[,] array2Db = new string[3, 2] { { "one", "two" }, { "three", "four" },
                            { "five", "six" } };

// 3次元配列
int[,,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } },
                        { { 7, 8, 9 }, { 10, 11, 12 } } };
// 何次元かを指定した3次元配列
int[,,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } },
                            { { 7, 8, 9 }, { 10, 11, 12 } } };

// それぞれの要素を表示する
System.Console.WriteLine(array2D[0, 0]);
System.Console.WriteLine(array2D[0, 1]);
System.Console.WriteLine(array2D[1, 0]);
System.Console.WriteLine(array2D[1, 1]);
System.Console.WriteLine(array2D[3, 0]);
System.Console.WriteLine(array2Db[1, 0]);
System.Console.WriteLine(array3Da[1, 0, 1]);
System.Console.WriteLine(array3D[1, 1, 2]);

// 以下の内容が出力される。
// 1
// 2
// 3
// 4
// 7
// three
// 8
// 12

多次元配列の特徴として、newを使わなくても初期化することができます。

ジャグ配列の書き方の例

// 2次元配列
int[][] arr = new int[2][];

// それぞれの要素を初期化する
arr[0] = new int[5] { 1, 3, 5, 7, 9 };
arr[1] = new int[4] { 2, 4, 6, 8 };

// 各要素を表示する
for (int i = 0; i < arr.Length; i++)
{
    System.Console.Write($"arr({i}): ");

    for (int j = 0; j < arr[i].Length; j++)
    {
        System.Console.Write($"{arr[i][j]}{(j == (arr[i].Length - 1) ? "" : " ")}");
    }
    System.Console.WriteLine();
}

// 以下の内容が出力される。
// arr(0): 1 3 5 7 9
// arr(1): 2 4 6 8

ジャグ配列の特徴は、多次元配列とは逆にnewを省略することはできません。

また、行ごとに列数を変えることができるのも特徴の一つです。(多次元配列は変えることができない)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA