为什么必须先将整数转换为字符串才能用于访问集合中的项目?

时间:2012-04-19 14:24:28

标签: collections vb6

我是VB的新手。我正在阅读一些旧的VB代码,我看到像 -

这样的语句
  Addr.AddrType(CStr(0)).A_Type = " "

为什么整数0必须转换为字符串?

请注意,Addr定义为

 Public Addr As clsAddressDetail 

AddrType被定义为集合

 Public AddrType As New Collection

2 个答案:

答案 0 :(得分:4)

此处使用的Collection类实际上是overloaded indexer。我的重点:

  

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

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

参数

     

关键

     

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

     

索引

     

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

因此,如果您要求AddrType(0),则要求该集合的第0个成员,对于此基于1的集合,该成员是错误的。但是,如果您要求AddrType("0"),则要求使用密钥"0"添加的该成员。任何字符串都可以用作键 - 只是这里使用的特定字符串是数字的字符串表示。

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

答案 1 :(得分:1)

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