Export (0) Print
Expand All

Collection Class

A Visual Basic Collection is an ordered set of items that can be referred to as a unit.

System.Object
  Microsoft.VisualBasic.Collection

Namespace:  Microsoft.VisualBasic
Assembly:  Microsoft.VisualBasic (in Microsoft.VisualBasic.dll)

[SerializableAttribute]
public sealed class Collection : ICollection, 
	IList, ISerializable, IDeserializationCallback

The Collection type exposes the following members.

  NameDescription
Public methodCollectionCreates and returns a new Visual Basic Collection object.
Top

  NameDescription
Public propertyCountReturns an Integer containing the number of elements in a collection. Read-only.
Public propertyItem[Int32]Returns a specific element of a Collection object either by position or by key. Read-only.
Public propertyItem[Object]Returns a specific element of a Collection object either by position or by key. Read-only.
Public propertyItem[String]Returns a specific element of a Collection object either by position or by key. Read-only.
Top

  NameDescription
Public methodAddAdds an element to a Collection object.
Public methodClearDeletes all elements of a Visual Basic Collection object.
Public methodContainsReturns a Boolean value indicating whether a Visual Basic Collection object contains an element with a specific key.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodGetEnumeratorReturns a reference to an enumerator object, which is used to iterate over a Collection object.
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodRemove(Int32)Removes an element from a Collection object.
Public methodRemove(String)Removes an element from a Collection object.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

  NameDescription
Explicit interface implemetationPrivate methodICollection.CopyToCopies the elements of the Collection to an Array, starting at a particular Array index. Implements the ICollection interface.
Explicit interface implemetationPrivate propertyICollection.CountGets the number of items in this collection. Implements the ICollection interface.
Explicit interface implemetationPrivate propertyICollection.IsSynchronizedGets a value indicating whether access to the Collection object is synchronized (thread safe). Implements the ICollection interface.
Explicit interface implemetationPrivate propertyICollection.SyncRootGets an object that can be used to synchronize access to the Collection object. Implements the ICollection interface.
Explicit interface implemetationPrivate methodIDeserializationCallback.OnDeserializationRuns after the entire Collection object graph has been deserialized. Implements the IDeserializationCallback interface.
Explicit interface implemetationPrivate methodIEnumerable.GetEnumeratorReturns an enumerator that iterates through the collection. Implements the ICollection interface.
Explicit interface implemetationPrivate methodIList.AddAdds an item to the Collection object. Implements the IList interface.
Explicit interface implemetationPrivate methodIList.ClearRemoves all items from the Collection object. Implements the IList interface.
Explicit interface implemetationPrivate methodIList.ContainsDetermines whether the Collection object contains a specific value. Implements the IList interface.
Explicit interface implemetationPrivate methodIList.IndexOfDetermines the index of a specific item in the Collection object. Implements the IList interface.
Explicit interface implemetationPrivate methodIList.InsertInserts an item to the Collection object at the specified index. Implements the IList interface.
Explicit interface implemetationPrivate propertyIList.IsFixedSizeGets a value indicating whether the Collection object has a fixed size. Implements the IList interface.
Explicit interface implemetationPrivate propertyIList.IsReadOnlyGets a value indicating whether the Collection object is read-only. Implements the IList interface.
Explicit interface implemetationPrivate propertyIList.ItemGets or sets the element at the specified index. Implements the IList interface
Explicit interface implemetationPrivate methodIList.RemoveRemoves the first occurrence of a specific object from the Collection object. Implements the IList interface.
Explicit interface implemetationPrivate methodIList.RemoveAtRemoves the Collection object item at the specified index. Implements the IList interface.
Explicit interface implemetationPrivate methodISerializable.GetObjectDataReturns the data needed to serialize the Collection object. Implements the ISerializable interface.
Top

NoteNote

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 (C# and Visual Basic).

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 an element with the Add method.

  • Remove an element with the Remove method.

  • Remove all elements with the Clear method.

  • Find out how many elements the collection contains with the Count property.

  • Check whether a specific element is present with the Contains method.

  • Return a specific element from the collection with the Item property.

  • Iterate through the entire collection with the For Each...Next Statement (Visual Basic).

    NoteNote

    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.

    Caution noteCaution

    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. For more information on locking a programming element, see SyncLock Statement.

The following example creates the Collection object names and a dialog box with which a user can add objects (names) to the collection. It then displays the names in the collection, and finally empties the collection without disposing of the Collection object itself.

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. Leave the default name as nameClass. 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. 
    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

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft