Collection 对象 (Visual Basic)

更新:2007 年 11 月

Visual Basic Collection 是可作为一个单元引用的一组有序项。

备注

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 对象相同的功能,但二者在 COM 环境中并不能交互操作。

    警告:

    循环访问 Visual Basic Collection 不是一个线程安全过程。即使在同步集合时,其他线程仍然可以修改该集合。这将导致枚举器引发异常。若要确保枚举过程中的线程安全性,请锁定集合,或者捕获由其他线程做出的更改所导致的异常。有关锁定编程元素的更多信息,请参见 SyncLock 语句

示例

下面的示例创建 Collection 对象 names 和一个对话框。用户可以利用这个对话框将对象(名称)添加到集合中。示例接着显示集合中的名称,最后清空集合但不释放 Collection 对象本身。

若要查看这是如何实现的,请从“项目”菜单中选择“添加类”命令,并在 nameClass 的模块级声明一个名为 instanceName 的公共变量(键入 Public instanceName),以保存每个实例的名称。请保留默认名称 nameClass。将下列代码复制并粘贴到另一个模块的“常规”部分,然后在另一个过程中以语句 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 中)

请参见

参考

Collection 对象成员

GetEnumerator 方法(Collection 对象)