从集合中检索项目
可以通过调用 .Item
函数从 Collection
中检索项目。
句法:
.Item(index)
参数 | 描述 |
---|---|
指数 | 要从 Collection 中检索的项目。如果传递的值是数字类型或带有数字子类型的 Variant ,则它将被解释为数字索引。如果传递的值是包含字符串的 String 或 Variant ,则它将被解释为键。如果传递了 Collection 中不存在的 String 键,则会产生运行时错误 5:无效的过程调用或参数。如果传递的数字索引在 Collection 中不存在,则会产生运行时错误 9:下标超出范围。 |
笔记:
.Item
是Collection
的默认成员。这允许语法的灵活性,如下面的示例用法所示。- 数字索引是从 1 开始的。
- 密钥不区分大小写。
.Item("Foo")
和.Item("foo")
指的是同一把键。 - 该指标参数不隐式转换为数字从
String
,反之亦然。.Item(1)
和.Item("1")
完全有可能参考Collection
的不同项目。
样本使用(索引):
Public Sub Example()
Dim foo As New Collection
With foo
.Add "One"
.Add "Two"
.Add "Three"
.Add "Four"
End With
Dim index As Long
For index = 1 To foo.Count
Debug.Print foo.Item(index) 'Prints One, Two, Three, Four
Next
End Sub
样本用法(键):
Public Sub Example()
Dim keys() As String
keys = Split("Foo,Bar,Baz", ",")
Dim values() As String
values = Split("One,Two,Three", ",")
Dim foo As New Collection
Dim index As Long
For index = LBound(values) To UBound(values)
foo.Add values(index), keys(index)
Next
Debug.Print foo.Item("Bar") 'Prints "Two"
End Sub
示例用法(替代语法):
Public Sub Example()
Dim foo As New Collection
With foo
.Add "One", "Foo"
.Add "Two", "Bar"
.Add "Three", "Baz"
End With
'All lines below print "Two"
Debug.Print foo.Item("Bar") 'Explicit call syntax.
Debug.Print foo("Bar") 'Default member call syntax.
Debug.Print foo!Bar 'Bang syntax.
End Sub
请注意,允许使用 bang(!
)语法,因为 .Item
是默认成员,可以使用单个 String
参数。这种语法的效用值得怀疑。