この連載の第2回では変数、第3回ではクラスやオブジェクトを学びました。この第4回では、変数やオブジェクトといったデータをまとめて扱える仕組みを紹介します。それが「配列」と「コレクション」です。

配列はオブジェクトが並んだもの

 まず、C#の配列を学びます。リスト1のコードを例に説明します。このコードは、日曜日(Sunday)から土曜日(Saturday)までの文字列を配列に格納し、その配列のデータを表示するコードです。リスト1の(1)を見てください。

リスト1●配列を定義したプログラム
リスト1●配列を定義したプログラム
[画像のクリックで拡大表示]
string[] days = new string[] { … }

の部分が、配列を定義して初期化しているコードです。前回の連載では、オブジェクトのインスタンス化を学びました。そこでは、

Film film1 = new Film();

というコードが登場しましたね。「new」演算子を使ってFilmクラスをインスタンス化して、そのオブジェクトをFilm型の変数film1に格納しているコードです。

 クラスからオブジェクトを生成するのに使ったnew演算子は、配列を生成する際にも使います。ここが配列を生成する際のポイントです。

 そしてC#では、配列をオブジェクト(配列オブジェクト)として表現します。つまり(1)では、生成した配列オブジェクトを変数daysに格納しているのです。

 配列オブジェクトには、同じ型のオブジェクトが並んで格納されます。(1)では、string型(文字列型)のオブジェクトが配列オブジェクトに並んで格納されているというわけです。

 この配列オブジェクトに格納されたそれぞれのオブジェクトを要素と呼び、各オブジェクトには番号(インデックス)が割り振られています。

 配列オブジェクトを生成する際は、要素に初期値を代入して初期化することも可能です。それが右辺の{ … }の中身です。要素を「,(カンマ)」で区切れば、格納するオブジェクトに対してインデックスがゼロから順番に割り振られていきます。つまり(1)のコードは、図1のような処理を行っているのです。

図1●配列のイメージ
図1●配列のイメージ
[画像のクリックで拡大表示]

 ちなみに、リスト1ではnew演算子を使って配列オブジェクトを生成しましたが、配列はよく利用するデータ構造なので、わざわざnew演算子を使ってオブジェクトを生成するのは面倒に感じるかもしれません。

 C#には、配列オブジェクトを定義するための簡易記法が備わっています。(1)のコードは、

string[] days = {"Sunday", … , "Saturday"};

と記述しても同じ処理になります。また、連載第2回(変数の宣言)で紹介したvarを用いて、

var days = new[] {"Sunday", …, "Saturday"};

と記述することも可能です。