多次元配列
グリッドとジャグ配列を学びます。
「多次元配列」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
1行を超えて
これまでの配列は、値が1列に並んだものでした。多次元配列では、表計算シートのように行と列を持つグリッドに値を格納します。
ゲームボード、表、行列などに適しています。
2次元配列の宣言
2次元配列では、角かっこの中にカンマを入れて[,]と表します。行数と列数の2つのサイズを指定します。
このグリッドは2行3列なので、6つの値を格納できます。
int[,] grid = new int[2, 3];
Console.WriteLine(grid[0, 0]); // 0セルへのアクセス
セルを読み書きするには、行と列の両方のインデックスをカンマで区切って指定します。
どちらのインデックスも、1次元配列と同じく0始まりです。
int[,] grid = new int[2, 3];
grid[0, 1] = 7;
grid[1, 2] = 9;
Console.WriteLine(grid[1, 2]); // 9グリッドの初期化
入れ子になった波かっこを使うと、作成時に2次元配列を埋めることができます。内側の各グループが1行を表します。
すべての行で列数を同じにする必要があります。
int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid[1, 0]); // 4GetLengthメソッド
2つの次元がある場合、Lengthはセルの総数を示します。1つの次元のサイズを取得するには、GetLengthを使います。
GetLength(0)は行数、GetLength(1)は列数を示します。
int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid.Length); // 6
Console.WriteLine(grid.GetLength(0)); // 2
Console.WriteLine(grid.GetLength(1)); // 3グリッドをループする
すべてのセルを処理するには、列を処理するループを行のループの中に入れます。外側のループが行を選び、内側のループがその行の列を順番に処理します。
GetLengthを使って、ループを実際のサイズに合わせてください。
int[,] grid = { { 1, 2 }, { 3, 4 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
for (int c = 0; c < grid.GetLength(1); c++)
{
Console.WriteLine(grid[r, c]);
}
}完全なグリッドプログラム
この完全なプログラムは小さなグリッドを作成し、その後、各値を行と列とともに出力します。
実行して、4つのセルがすべて一覧表示されることを確認してください。
int[,] grid = { { 10, 20 }, { 30, 40 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
for (int c = 0; c < grid.GetLength(1); c++)
{
Console.WriteLine("[" + r + "," + c + "] = " + grid[r, c]);
}
}3次元
カンマを増やすと、次元を追加できます。3次元配列では[,,]と3つのサイズを使います。
グリッドを何枚も重ねたものと考えてください。使う場面は少なめですが、基本的なルールは同じです。
int[,,] cube = new int[2, 2, 2];
cube[1, 1, 1] = 5;
Console.WriteLine(cube[1, 1, 1]); // 5ジャグ配列
ジャグ配列は配列の配列で、[][]と表します。長方形のグリッドとは異なり、各行の長さを変えられます。
2組の角かっこを使ってアクセスします。
int[][] jagged = new int[2][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5 };
Console.WriteLine(jagged[1][2]); // 5長方形配列とジャグ配列の比較
長方形の[,]配列では、各行の長さが常に同じで、データが効率よく格納されます。ジャグ配列の[][]では、行ごとに長さを変えられます。
本当の表には長方形配列を、行ごとに大きさが自然に異なる場合にはジャグ配列を選びます。
int[][] rows = { new[] { 1 }, new[] { 2, 3, 4 } };
Console.WriteLine(rows[0].Length); // 1
Console.WriteLine(rows[1].Length); // 3グリッドの合計
入れ子になったループ内で各セルを加算すると、グリッドのすべての値を合計できます。
このパターンは、行数や列数がどのような場合にも応用できます。
int[,] grid = { { 1, 2 }, { 3, 4 } };
int total = 0;
foreach (int v in grid)
{
total += v;
}
Console.WriteLine(total); // 10確認問題
多次元配列についての知識を確認しましょう。
まとめ
[,]を使ってグリッドを作成し、行と列のインデックスでセルにアクセスし、GetLengthでサイズを測る方法を学びました。
入れ子になったループですべてのセルを処理でき、カンマを増やすと次元を追加できます。また、ジャグ配列の[][]では行ごとに異なる長さを設定できます。これで、C#でデータの表を格納し処理できるようになりました。
AI チューターと学ぶ C# — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 93
- レッスン
- 346
よくある質問
「多次元配列」レッスンは無料ですか?
はい。「多次元配列」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「多次元配列」で何を学びますか?
グリッドとジャグ配列を学びます。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「多次元配列」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。