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
要求
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)