更新 : 2007 年 11 月
このレッスンでは、コレクションを使用してオブジェクトのグループを管理する方法について説明します。
前のレッスンでは、配列を使用して変数のグループを管理する方法を説明しました。配列を使用してオブジェクトのグループを管理することもできますが、Visual Basic には、類似したオブジェクトのグループを格納したり取得したりするために使用できる、コレクションと呼ばれる特別な種類のオブジェクトもあります。
配列と同様に、Collection オブジェクト内の各項目には、項目の識別に使用できるインデックスがあります。また、Collection オブジェクト内の各項目には、項目の識別に使用できるキーと呼ばれる String 値もあります。キーを使用する利点は、項目のインデックスを覚える必要がないという点です。インデックスを覚えなくても、わかりやすい名前を使用して項目を参照できます。
コレクションの作成
コレクションは、プログラムが同じクラスの複数のインスタンスを使用する場合に便利です。たとえば、前のレッスンで作成した Players クラスを見てみましょう。野球チームを表すためには、複数の Players オブジェクトが必要となる可能性が大です。
コレクションを作成するには、次の宣言に示すように、まず Collection オブジェクトのインスタンスを作成します。
Dim baseballTeam As New Collection
Collection オブジェクトを作成した後、そこに項目を追加する場合には Add メソッド、項目を削除する場合には Remove メソッドを使用します。項目を追加する場合は、まず追加する項目を指定して、次にキーとして使用する String 値を指定します。
baseballTeam.Add(playerObject, "Player's Name")
項目を削除する場合は、キーを使用して削除する項目を指定します。
baseballTeam.Remove("Player's Name")
次の手順では、2 つの新しい Players オブジェクトを追加して team コレクションを作成し、Position プロパティをキーとして使用して、Players オブジェクトをコレクションに追加します。
やってみよう
オブジェクトのコレクションを作成するには
前のレッスンで作成した Persons プロジェクトを開きます。プロジェクトを保存しなかった場合は、前のレッスン「既存クラスからのクラスの構築 : 継承を使用する」に戻り、手順を完了します。
ソリューション エクスプローラで、[PlayerTest] プロジェクトの [Form1.vb] ノードを選択して、[表示] メニューの [コード] をクリックします。
コード エディタで、宣言セクション (player2 の宣言の下) に次のコードを追加します。
Dim player3 As New Persons.Players Dim player4 As New Persons.Players Dim team As New Collection
Form1_Load イベント プロシージャに次のコードを追加します。
With player3 .FirstName = "Eduardo" .LastName = "Saavedra" .Number = 52 .Position = "First Base" End With With player4 .FirstName = "Karl" .LastName = "Jablonski" .Number = 22 .Position = "Pitcher" End With team.Add(player1, player1.Position) team.Add(player2, player2.Position) team.Add(player3, player3.Position) team.Add(player4, player4.Position)
ソリューション エクスプローラの [PlayerTest] プロジェクトで、[Form1.vb] ノードを選択します。次に、[表示] メニューの [デザイナ] をクリックします。
ツールボックスから、フォームに ComboBox コントロールをドラッグします。
[プロパティ] ウィンドウで、Items プロパティを選択し、[...] ボタンをクリックします。
文字列コレクション エディタで次のように入力して、[OK] をクリックします。
Catcher
First Base
Pitcher
Shortstop
ComboBox コントロールをダブルクリックしてコード エディタを開き、ComboBox1_SelectedIndexChanged イベント ハンドラに次のコードを入力します。
Dim SelectedPlayer As Persons.Players SelectedPlayer = team(ComboBox1.SelectedItem) MsgBox("Playing " & ComboBox1.SelectedItem & " is " & _ SelectedPlayer.FullName & "!")
F5 キーを押してプログラムを実行します。ドロップダウン リストからポジションを選択します。そのポジションの選手がメッセージ ボックスに表示されます。
次の手順
このレッスンでは、Collection オブジェクトを使用してオブジェクトのグループを管理する方法について説明しました。ここで、「詳細情報 : コレクションで For Each...Next ループを使用する」に進んでコレクションの詳細を参照するか、次の一連のレッスンに進んで独自のコントロールを作成する方法を参照するかを選択できます。
次のレッスン : 「表示されるオブジェクト : 初めてのユーザー コントロールの作成」
参照
処理手順
詳細情報 : コレクションで For Each...Next ループを使用する