C#プログラミング入門!初心者向け その16 配列 ②多次元配列

ビジュアルスタジオC#
Visualstudio
みつる君
みつる君

こんにちは、C#のプログラミングのみつるです。

今回はC#の、多次元配列について詳しく説明します。

一次元配列は前回説明済みなので、そちらを参照してください。

多次元配列

マリさん
マリさん

多次元配列とは、配列の要素が配列であるようなデータ構造のことです。

例えば、二次元配列は行と列で構成される表のようなもので、三次元配列は行と列と奥行きで構成される立体的なものです。

C#では、多次元配列を宣言するには、型名の後に[,]や[,,]などのようにカンマを入れた角括弧を付けます。

例えば、int型の二次元配列を宣言するには、int[,] array;と書きます。

三次元配列なら、int[,,] array;と書きます。

みつる君
みつる君

多次元配列を初期化するには、要素を{}で囲んで指定します。

要素はカンマで区切りますが、各次元ごとに{}で囲む必要があります。

例えば、int型の二次元配列を初期化するには、以下のように書きます。

二次元配列

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
          int[,] array = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
      };
        }
    }
}

マリさん
マリさん

この場合、array[0,0]は1、array[1,2]は6、array[2,1]は8という値になります。

二次元配列では、最初のインデックスが行番号、二番目のインデックスが列番号を表します。

三次元配列

みつる君
みつる君

三次元配列を初期化する場合は、以下のように書きます。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
          int[,,] array = {
        {
          {1, 2, 3},
          {4, 5, 6}
        },
        {
          {7, 8, 9},
          {10, 11, 12}
        }
      };
        }
    }
}

マリさん
マリさん

この場合、array[0,0,0]は1、array[1,1,2]は12、array[0,1,1]は5という値になります。

三次元配列では、最初のインデックスが奥行き番号、二番目のインデックスが行番号、三番目のインデックスが列番号を表します。

多次元配列の長さや要素数を取得

みつる君
みつる君

多次元配列の長さや要素数を取得するには、LengthプロパティやGetLengthメソッドを使います。

Lengthプロパティは全ての要素数を返しますが、GetLengthメソッドは指定した次元の要素数を返します。例えば、

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
          Console.WriteLine(array.Length);
      Console.WriteLine(array.GetLength(0));
      Console.WriteLine(array.GetLength(1));
      Console.WriteLine(array.GetLength(2)); 
        }
    }
}

実行結果

24
2
2
3

みつる君
みつる君

というように使います。

マリさん
マリさん

多次元配列を操作するには、for文やforeach文などのループ文を使います。

for文では各次元ごとにループ変数を用意し、インデックスとして使います。例えば、

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
          for (int i = 0; i < array.GetLength(0); i++)
      {
        for (int j = 0; j < array.GetLength(1); j++)
        {
          for (int k = 0; k < array.GetLength(2); k++)
          {
            Console.Write(array[i,j,k] + " ");
           }
          Console.WriteLine();
        }
      }
        }
    }
}

マリさん
マリさん

というように書くと、

実行結果

1 2 3
4 5 6
7 8 9
10 11 12

マリさん
マリさん

というように出力されます。

みつる君
みつる君

foreach文では全ての要素を順番に取り出すことができます。例えば、

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
          foreach (int x in array)
      {
        Console.Write(x + " ");
      }
        }
    }
}

みつる君
みつる君

というように書くと、

実行結果

1 2 3 4 5 6 7 8 9 10 11 12

みつる君
みつる君

というように出力されます。

マリさん
マリさん

以上が、C#の多次元配列についての説明です。

多次元配列は、表や立体などの複雑なデータ構造を扱うときに便利です。

ぜひ使ってみてください。

侍エンジニアPlus
タイトルとURLをコピーしました