3

一般来说,我是 VB 的新手。我正在浏览一些旧的 VB 代码,我看到如下语句 -

  Addr.AddrType(CStr(0)).A_Type = " "

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

请注意,Addr 定义为

 Public Addr As clsAddressDetail 

AddrType 被定义为一个集合

 Public AddrType As New Collection
4

2 回答 2

4

这里使用的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"不是特别好......

于 2012-04-19T14:38:15.123 回答
1

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

于 2012-04-19T14:34:11.867 回答