2020年09月24日
川俣晶の縁側ソフトウェアC# コーディング How To total 416 count

【入門級】2次元配列と配列の配列(ジャグ配列)は似ているが違う

Written By: 川俣 晶連絡先

似て非なる配列 §

 2次元配列は添え字を2つ付ける配列です。(例: array1[1, 2])

 配列の配列は添え字を2つ付ける配列です。(例: array2[1][2])

 区切り文字が違うだけで、とても似ています。

 しかし、この2つは全くの別物です。

 混同しないように注意しましょう。

 具体的に何が違うのでしょう。

 2次元配列は縦横に広がった一つのオブジェクトです。オブジェクトの数は1つです。

 配列の配列は配列というオブジェクトを多数収容したオブジェクトです。オブジェクトの数は多数です。

 ですから、new演算子を使う回数が全く違います。

 サンプルソースで確認してみましょう。

罠の数々 §

  • 配列の配列は2番目の添え字の上限を変化できる。new int[][] { new int[2], new int[3], new int[5] }のように書けば良い。しかし、2次元配列は上限を変更できない。両者の違いが初期化だけでは無いのだ

参考リンク §

多次元配列 (C# プログラミング ガイド)

ジャグ配列 (C# プログラミング ガイド)

 2次元配列の話題は多次元配列の説明に含まれること。配列の配列はジャグ配列と呼ばれていることを上記リンクから確かめてみよう。

 ジャグ配列と多次元配列を混在させる方法も上記リンクに含まれる。実際に見て、どんな世界が広がっているのか見てみよう。

リポジトリ §

https://github.com/autumn009/cshowto

Array §

using System;

class Program

{

    static void Main()

    {

        // 2次元配列

        int[,] array1 = new int[3, 3];

        array1[1, 2] = 123;

        Console.WriteLine($"array1[1, 2] = {array1[1, 2]}");

        // 配列の配列

        int[][] array2 = new int[][] { new int[3], new int[3], new int[3] };

        array2[1][2] = 123;

        Console.WriteLine($"array2[1][2] = {array2[1][2]}");

    }

}

実行結果

array1[1, 2] = 123

array2[1][2] = 123

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?