Collection クラス


Visual Basic の Collection は、単位として参照できる項目の順序付けされたセットです。A Visual Basic Collection is an ordered set of items that can be referred to as a unit.

public ref class Collection sealed : System::Collections::IList, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public sealed class Collection : System.Collections.IList, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type Collection = class
    interface ICollection
    interface IList
    interface ISerializable
    interface IDeserializationCallback
Public NotInheritable Class Collection
Implements IDeserializationCallback, IList, ISerializable

次の例では、Collection オブジェクト names と、ユーザーがコレクションにオブジェクト (名前) を追加できるダイアログ ボックスを作成します。The following example creates the Collection object names and a dialog box with which a user can add objects (names) to the collection. コレクション内の名前を表示し、最後に、Collection オブジェクト自体は破棄せず、コレクションを空にします。It then displays the names in the collection, and finally empties the collection without disposing of the Collection object itself.

この動作を確認するには、プロジェクトメニューからクラスの追加コマンドを選択し、各インスタンスの名前を保持するために、instanceName (型nameClass) のモジュール レベルで Public instanceName パブリック変数を宣言します。To see how this works, choose the Add Class command from the Project menu and declare a public variable called instanceName at the module level of nameClass (type Public instanceName) to hold the names of each instance. 既定の名前は nameClass にします。Leave the default name as nameClass. 次のコードを、別のモジュールの全般セクションにコピーして貼り付けます。別のプロシージャの classNamer ステートメントを使用して起動します。Copy and paste the following code into the General section of another module, and then start it with the statement classNamer in another procedure. (この例は、クラスをサポートするホスト アプリケーションでのみ機能します)。(This example works only with host applications that support classes.)

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.
        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
        ' Since Visual Basic collections are reindexed automatically, 
        ' remove the first member on each iteration.
    Next count
End Sub



可能であれば、Visual Basic System.Collections.Generic の代わりにSystem.Collections.Concurrent名前空間またはCollection名前空間のジェネリック コレクションを使用してください。Whenever possible, you should use the generic collections in the System.Collections.Generic namespace or the System.Collections.Concurrent namespace instead of a Visual Basic Collection. 詳細については、コレクション を参照してください。For more information, see Collections.

Visual Basic Collection オブジェクトは関連する項目のグループを 1 つのオブジェクトとして参照する便利な手段を提供します。The Visual Basic Collection object provides a convenient way to refer to a related group of items as a single object. コレクション内の項目、または要素は、コレクション内に存在するという事実によってのみ、関連付けされる必要があります。The items, or elements, in a collection need only be related by the fact that they exist in the collection. コレクションの要素は、同じデータ型を共有する必要はありません。Elements of a collection do not have to share the same data type.

次の例に示すように、コレクションは他のオブジェクトと同じ方法で作成することができます。You can create a collection the same way you create other objects, as the following example illustrates.

Dim coll As New Microsoft.VisualBasic.Collection()  

コレクションを作成した後は、次のいずれかを実行できます。Once you have created a collection, you can do any of the following:

  • Addメソッドで要素を追加します。Add an element with the Add method.

  • Removeメソッドで要素を削除します。Remove an element with the Remove method.

  • Clearメソッドですべての要素を削除します。Remove all elements with the Clear method.

  • Countプロパティでコレクションに含まれる要素の数を調べます。Find out how many elements the collection contains with the Count property.

  • Containsメソッドで特定の要素が存在するかどうかを確認します。Check whether a specific element is present with the Contains method.

  • Item[String]プロパティでコレクションから特定の要素を返します。Return a specific element from the collection with the Item[String] property.

  • For Each...Nextステートメント コレクション全体を反復処理します。Iterate through the entire collection with the For Each...Next Statement.


    Visual Basic Collection オブジェクトは、Visual Basic 6.0 の Collection オブジェクトと同じ機能を持ちますが、2 つは COM 環境で相互運用できません。Although the Visual Basic Collection object has functionality identical to the Collection object in Visual Basic 6.0, the two cannot interoperate in a COM environment.


    Visual Basic Collection の反復処理はスレッド セーフではありません。Iterating through a Visual Basic Collection is not a thread-safe procedure. コレクションが同期されている場合でも、他のスレッドがコレクションを変更できるため、列挙子は例外をスローします。Even if the collection is synchronized, other threads can still modify the collection, causing the enumerator to throw an exception. 列挙中にスレッド セーフを保証するためには、コレクションをロックするか、他のスレッドによる変更に起因する例外をキャッチします。To guarantee thread safety during enumeration, either lock the collection or catch the exceptions resulting from changes made by other threads. プログラミング要素のロックの詳細については、SyncLock ステートメント を参照してください。For more information on locking a programming element, see SyncLock Statement.



Visual Basic の新しい Collection オブジェクトを作成して返します。Creates and returns a new Visual Basic Collection object.



コレクション内の要素の数を取得します。Gets the number of elements in a collection.


Collection オブジェクトの特定の要素を、位置またはキーに基づいて取得します。Gets a specific element of a Collection object either by position or by key.


Collection オブジェクトの特定の要素を、位置またはキーに基づいて取得します。Gets a specific element of a Collection object either by position or by key.


Collection オブジェクトの特定の要素を、位置またはキーに基づいて取得します。Gets a specific element of a Collection object either by position or by key.


Add(Object, String, Object, Object)

要素を Collection オブジェクトに追加します。Adds an element to a Collection object.


Visual Basic の Collection オブジェクトの要素をすべて削除します。Deletes all elements of a Visual Basic Collection object.


Visual Basic の Collection オブジェクトに特定のキーを持つ要素が含まれているかどうかを示す値を返します。Returns a value that indicates whether a Visual Basic Collection object contains an element with a specific key.


指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)

コレクションを反復処理する列挙子を返します。Returns an enumerator that iterates through the collection.


既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

Collection オブジェクトから要素を削除します。Removes an element from a Collection object.


Collection オブジェクトから要素を削除します。Removes an element from a Collection object.


現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)


ICollection.CopyTo(Array, Int32)

Collection の要素を Array にコピーします。Array の特定のインデックスからコピーが開始されます。Copies the elements of the Collection to an Array, starting at a particular Array index.


このコレクション内の項目の数を取得します。Gets the number of items in this collection.


Collection オブジェクトへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。Gets a value that indicates whether access to the Collection object is synchronized (thread-safe).


Collection オブジェクトへのアクセスを同期するために使用できるオブジェクトを取得します。Gets an object that can be used to synchronize access to the Collection object.


Collection オブジェクト グラフの逆シリアル化が完了した後で実行されます。Runs after the entire Collection object graph has been deserialized.


コレクションを反復処理する列挙子を取得します。Gets an enumerator that iterates through the collection.


コレクションにアイテムを追加します。Adds an item to the collection.


Collection オブジェクトからすべての項目を削除します。Removes all items from the Collection object.


Collection オブジェクトに特定の値が格納されているかどうかを判断します。Determines whether the Collection object contains a specific value.


Collection オブジェクト内での指定した項目のインデックスを調べます。Determines the index of a specific item in the Collection object.

IList.Insert(Int32, Object)

Collection オブジェクト内の指定されたインデックス位置に項目を挿入します。Inserts an item to the Collection object at the specified index.


Collection オブジェクトが固定サイズかどうかを示す値を取得します。Gets a value that indicates whether the Collection object has a fixed size.


Collection オブジェクトであるかどうかを示す値を取得します。Gets a value that indicates whether the Collection object is.


指定したインデックスにある要素を取得または設定します。Gets or sets the element at the specified index.


指定したオブジェクトが Collection オブジェクト内にあるときに、最初に出現したものを削除します。Removes the first occurrence of a specific object from the Collection object.


指定されたインデックスの Collection オブジェクト項目を削除します。Removes the Collection object item at the specified index.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Collection オブジェクトをシリアル化するために必要なデータを返します。Returns the data needed to serialize the Collection object.



IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.


指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.


クエリの並列化を有効にします。Enables parallelization of a query.


IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.