【C#】2次元配列(多次元配列)の基本的な使い方:初期化とアクセス

目次

2次元配列とは

C#の配列(Array)は、通常 int[]string[] のような1次元(直線状)のデータ構造を指します。しかし、Excelのシート、ゲームのマップ、座席表、画像データ(ピクセルグリッド)のように、**行(Row)列(Column)**を持つ「格子状」または「表形式」のデータを管理したい場合があります。

このようなデータを効率的に扱うために、C#では2次元配列(多次元配列)がサポートされています。

この記事では、2次元配列の宣言、初期化、および要素へのアクセス方法について解説します。


2次元配列の宣言と初期化

2次元配列は、型名の後にカンマ(,)を一つ入れた [,] を付けて宣言します。

1. サイズを指定して宣言

newキーワードで、[行数, 列数]を指定してインスタンスを生成します。

// 3行4列の int 型配列を作成 (中身はすべて 0 で初期化される)
int[,] matrix = new int[3, 4];

2. 宣言と同時に初期化 (推奨)

値が最初から決まっている場合は、{}(初期化子)をネスト(入れ子)にして使用します。この方法は、new int[,] のように型を明示する方法と、varnew [,] で型推論に任せる方法があります。

using System;

public class Array2DInitialization
{
    public static void Main()
    {
        // 3行4列のグリッドデータを宣言と同時に初期化
        // { {1行目}, {2行目}, {3行目} }
        int[,] gridData = new int[,]
        {
            { 10, 11, 12, 13 },
            { 20, 21, 22, 23 },
            { 30, 31, 32, 33 }
        };

        // var と new [,] を使った型推論でも同じ
        // var gridData = new [,]
        // {
        //     { 10, 11, 12, 13 },
        //     { 20, 21, 22, 23 },
        //     { 30, 31, 32, 33 }
        // };
    }
}

要素へのアクセス:[行, 列]

2次元配列の要素にアクセスするには、1次元配列の[i]とは異なり、[行インデックス, 列インデックス] のようにカンマ区切りで2つのインデックスを指定します。

インデックスは、行も列も0から始まります。

コード例:値の読み取りと書き込み

映画館の座席表(string型)を例に、特定の座席の情報を読み取り、別の座席の情報を書き換える(予約済みにする)例です。

using System;

public class Array2DAccessExample
{
    public static void Main()
    {
        // 座席表 (2行3列)
        string[,] seatLayout = new string[,]
        {
            { "A-1", "A-2", "A-3" },
            { "B-1", "B-2", "B-3" }
        };

        // 1. 値の読み取り (0行目, 1列目)
        string seat_A2 = seatLayout[0, 1];
        Console.WriteLine($"[0, 1] の座席: {seat_A2}"); // A-2

        // 2. 値の書き込み(変更) (1行目, 2列目)
        Console.WriteLine($"[1, 2] を変更前: {seatLayout[1, 2]}"); // B-3
        
        seatLayout[1, 2] = "Reserved"; // "B-3" を "Reserved" に上書き
        
        Console.WriteLine($"[1, 2] を変更後: {seatLayout[1, 2]}"); // Reserved
    }
}

出力結果:

[0, 1] の座席: A-2
[1, 2] を変更前: B-3
[1, 2] を変更後: Reserved

ループ処理:GetLength メソッド

2次元配列のすべての要素を処理(反復処理)するには、forループを2重(ネスト)にするのが一般的です。

ここで注意が必要なのは、1次元配列の.Length(総要素数)ではなく、GetLength(int dimension)メソッドを使用する点です。

  • array.GetLength(0): 第1次元の長さ(行数)を返します。
  • array.GetLength(1): 第2次元の長さ(列数)を返します。

コード例:2重ループによる全要素の出力

using System;

public class Array2DLoopExample
{
    public static void Main()
    {
        int[,] gridData = new int[,]
        {
            { 10, 11, 12, 13 },
            { 20, 21, 22, 23 },
            { 30, 31, 32, 33 }
        };

        // GetLength(0) で行数を取得 (この例では 3)
        int rowCount = gridData.GetLength(0);
        
        // GetLength(1) で列数を取得 (この例では 4)
        int colCount = gridData.GetLength(1);

        Console.WriteLine($"行数: {rowCount}, 列数: {colCount}");
        Console.WriteLine("--- グリッドデータ一覧 ---");

        // 外側のループ (行: i)
        for (int i = 0; i < rowCount; i++)
        {
            // 内側のループ (列: j)
            for (int j = 0; j < colCount; j++)
            {
                // [i, j] でアクセス
                int value = gridData[i, j];
                Console.Write($"{value} "); // Write で改行せずに出力
            }
            Console.WriteLine(); // 1行が終わるごとに改行
        }
    }
}

出力結果:

行数: 3, 列数: 4
--- グリッドデータ一覧 ---
10 11 12 13 
20 21 22 23 
30 31 32 33 

まとめ

2次元配列は、C#で表形式のデータを扱うための基本的なデータ構造です。

  • new int[行数, 列数] または new [,] { ... } で初期化します。
  • 要素へのアクセスは myArray[行, 列] とカンマで区切ります。
  • ループ処理で各次元の長さを取得するには、GetLength(0)(行数)とGetLength(1)(列数)を使用します。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次