2012-04-19 43 views

回答

4

这里使用的Collection类具有什么实际上是overloaded indexer。我的重点:

无论是 位置或键返回Collection对象的特定元素。只读。

Default Public ReadOnly Property Item(_ 
ByVal { Key As String | Index As Integer | Index As Object } _) As Object 

参数

密钥

的唯一字符串表达式,它指定,而不是一个位置索引可使用的密钥串,以访问 集合的元素。键必须对应于将 元素添加到集合时指定的键参数。

指数

(A)的数值表达式,指定集合的​​元素的位置。索引必须是从1到数字 的数值属性(集合对象)的数字。 (B)对象 表达式,该表达式指定集合的​​元素的位置或键字符串。

所以,如果你问AddrType(0),你所要求的收集,这对于这个基于1的集合是一个错误的零成员。但是,如果您要求AddrType("0"),您要求那个已加入密钥"0"的会员。任何字符串都可以用作关键字 - 只是这里使用的特定字符串是数字的字符串表示形式。

顺便说一句,在风格上我会说写CStr(0)而非"0"不是特别好...

+0

我几乎觉得原来的程序员试图首先使用0,当没有正常工作,他确定该键是字符串。然后不假思索地把'CStr()'扔进去,它从未被给过别的想法。 – Bob77 2012-04-19 20:09:23

1

CSTR中()函数有用于访问ADDRTYPE集合中的特定成员。集合可以通过数字索引或字符串键值来引用。所以简短的回答是,整数不必必须转换为字符串才能访问集合成员。为什么这个特定的编码器选择使用“0”作为键值是未知的;它的确没有比使用数字索引更具描述性,这将是字符串键值的唯一优势。