Collection オブジェクト (Visual Basic)
更新 : 2007 年 11 月
Visual Basic の Collection は、一定の順序で並んだ項目のセットであり、1 つの単位として参照できます。
解説
Visual Basic の Collection オブジェクトを利用すると、関連のある項目のグループを単一のオブジェクトとして簡単に参照できます。コレクションの項目、つまり要素に必要な関連性は、コレクション内に存在しているという事実だけです。コレクションの要素は、同じデータ型を共有する必要はありません。
次の例のとおり、コレクションは、その他のオブジェクトと同じように作成できます。
Dim coll As New Microsoft.VisualBasic.Collection()
コレクションを作成すると、次のいずれかの作業を行うことができます。
Add メソッドを使用して要素を追加する
Remove メソッドを使用して要素を削除する
Clear メソッドを使用してすべての要素を削除する
Count プロパティでコレクション内の要素数を取得する
Contains メソッドで特定の要素が存在するかどうかを確認する
Item プロパティでコレクション内の特定の要素を返す
For Each...Next ステートメント (Visual Basic) でコレクション全体を反復処理する
メモ : Visual Basic の Collection オブジェクトは、Visual Basic 6.0 の Collection オブジェクトと同様の機能を持ちますが、この 2 つは COM 環境で相互運用できません。
注意 : Visual Basic の Collection の反復処理は、スレッド セーフなプロシージャではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあります。その場合、列挙子により例外がスローされます。列挙の処理をスレッド セーフにするには、コレクションをロックする方法と、別のスレッドによる変更で発生した例外をキャッチする方法があります。プログラミング要素のロックの詳細については、「SyncLock ステートメント」を参照してください。
使用例
次の例では、Collection オブジェクトの names と、オブジェクト (名前) をコレクションに追加するためのダイアログ ボックスを作成します。次に、コレクション内の名前を表示し、Collection オブジェクト自身は破棄せずにコレクションを空にします。
このプログラムがどのように動作するかを確認するには、[プロジェクト] メニューの [クラスの追加] をクリックし、各インスタンスの名前を保持する変数として、instanceName という名前のパブリック変数を nameClass のモジュール レベルで宣言します (「Public instanceName」と入力)。クラス名は既定の nameClass のままにしておきます。以下のコードをコピーして別のモジュールの General セクションに貼り付けた後、別のプロシージャの classNamer ステートメントで起動します。この例は、クラスをサポートするホスト アプリケーションでだけ動作します。
Public Class nameClass
Public instanceName As String
End Class
Sub classNamer()
' Create a Visual Basic Collection object.
Dim names As New Microsoft.VisualBasic.Collection()
Dim key As Integer
Dim msg As String
Dim name As String
Dim nameList As String = ""
' 1. Get names from the user to add to the collection.
Do
Dim inst As New nameClass()
key += 1
msg = "Please enter a name for this object." & vbCrLf _
& "Press Cancel to see names in collection."
name = InputBox(msg, "Name the Collection items")
inst.instanceName = name
' If user entered a name, add it to the collection.
If inst.instanceName <> "" Then
names.Add(inst, CStr(key))
End If
Loop Until name = ""
' 2. Create and display a list of names from the collection.
For Each oneInst As nameClass In names
nameList &= oneInst.instanceName & vbCrLf
Next oneInst
MsgBox(nameList, , "Instance Names in names Collection")
' 3. Remove elements from the collection without disposing of the collection.
For count As Integer = 1 To names.Count
names.Remove(1)
' Since Visual Basic collections are reindexed automatically,
' remove the first member on each iteration.
Next count
End Sub
必要条件
名前空間 : Microsoft.VisualBasic
アセンブリ : Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll)