一般来说,我是 VB 的新手。我正在浏览一些旧的 VB 代码,我看到如下语句 -
Addr.AddrType(CStr(0)).A_Type = " "
为什么整数 0 必须转换为字符串?
请注意,Addr 定义为
Public Addr As clsAddressDetail
AddrType 被定义为一个集合
Public AddrType As New Collection
一般来说,我是 VB 的新手。我正在浏览一些旧的 VB 代码,我看到如下语句 -
Addr.AddrType(CStr(0)).A_Type = " "
为什么整数 0 必须转换为字符串?
请注意,Addr 定义为
Public Addr As clsAddressDetail
AddrType 被定义为一个集合
Public AddrType As New Collection
这里使用的Collection
类实际上是一个重载的 indexer。我的重点:
通过 position 或 key返回 Collection 对象的特定元素。只读。
Default Public ReadOnly Property Item( _ ByVal { Key As String | Index As Integer | Index As Object } _ ) As Object
参数
钥匙
一个唯一的 String 表达式,它指定一个可以用来代替位置索引的键字符串来访问集合的元素。Key 必须对应于将元素添加到集合时指定的 Key 参数。
指数
(A) 指定集合元素位置的数值表达式。索引必须是从 1 到集合的 Count 属性(集合对象)的值之间的一个数字。或(B) 一个 Object 表达式,它指定集合元素的位置或键字符串。
因此,如果您要求 ,则您要求AddrType(0)
的是集合的第零个成员,对于这个基于 1 的集合来说,这是一个错误。但是,如果您要求AddrType("0")
,则您要求的是使用 Key 添加的那个成员"0"
。任何字符串都可以用作键 - 只是这里使用的特定字符串是数字的字符串表示形式。
顺便说一句,在风格上我会说写作CStr(0)
而"0"
不是特别好......
那里的 CStr() 函数用于访问 AddrType 集合的特定成员。集合可以通过数字索引或字符串键值引用。所以简短的回答是,整数不必转换为字符串来访问集合成员。为什么这个特定的编码器选择使用“0”作为键值是未知的;它当然不比使用数字索引更具描述性,这将是字符串键值的唯一优势。