我是VB的新手。我正在阅读一些旧的VB代码,我看到像 -
这样的语句 Addr.AddrType(CStr(0)).A_Type = " "
为什么整数0必须转换为字符串?
请注意,Addr定义为
Public Addr As clsAddressDetail
AddrType被定义为集合
Public AddrType As New Collection
答案 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”作为键值是未知的;它肯定没有比使用数字索引更具描述性,这是字符串键值的唯一优势。