我是VB的新手。我會通過一些舊的VB代碼,我看到這樣的語句 -爲什麼整數必須轉換爲字符串才能用於訪問集合中的項目?
Addr.AddrType(CStr(0)).A_Type = " "
爲什麼整數0已被轉換爲字符串?
注意,地址被定義爲
Public Addr As clsAddressDetail
ADDRTYPE被定義爲一個集合
Public AddrType As New Collection
我是VB的新手。我會通過一些舊的VB代碼,我看到這樣的語句 -爲什麼整數必須轉換爲字符串才能用於訪問集合中的項目?
Addr.AddrType(CStr(0)).A_Type = " "
爲什麼整數0已被轉換爲字符串?
注意,地址被定義爲
Public Addr As clsAddressDetail
ADDRTYPE被定義爲一個集合
Public AddrType As New Collection
這裏使用的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"
不是特別好...
CSTR中()函數有用於訪問ADDRTYPE集合中的特定成員。集合可以通過數字索引或字符串鍵值來引用。所以簡短的回答是,整數不必必須轉換爲字符串才能訪問集合成員。爲什麼這個特定的編碼器選擇使用「0」作爲鍵值是未知的;它的確沒有比使用數字索引更具描述性,這將是字符串鍵值的唯一優勢。
我幾乎覺得原來的程序員試圖首先使用0,當沒有正常工作,他確定該鍵是字符串。然後不假思索地把'CStr()'扔進去,它從未被給過別的想法。 – Bob77 2012-04-19 20:09:23