Почему целые числа должны быть преобразованы в строки, прежде чем их можно будет использовать для доступа к элементам коллекции?
Я новичок в VB вообще. Я просматриваю какой-то старый VB-код и вижу такие утверждения, как -
Addr.AddrType(CStr(0)).A_Type = " "
Почему целое число 0 должно быть преобразовано в строку?
Обратите внимание, что Addr определяется как
Public Addr As clsAddressDetail
AddrType определяется как коллекция
Public AddrType As New Collection
2 ответа:
Используемый здесь класс
Collection
имеет то, что фактически является перегруженным индексатором . Мои акценты:Возвращает определенный элемент объекта коллекции либо по позиции или ключом . Только для чтения.
Default Public ReadOnly Property Item( _ ByVal { Key As String | Index As Integer | Index As Object } _ ) As Object
Параметры
Ключ
Уникальное строковое выражение, определяющее строку ключа, которая может использоваться вместо позиционного индекса для доступа к элементу коллекция. Ключ должен соответствовать ключевому аргументу указано, когда элемент был добавлен в коллекцию.
Индекс
(A) числовое выражение, определяющее положение элемента коллекции. Индекс должен быть числом от 1 до значения свойство Count коллекции (объект коллекции). Или (B) Объект выражение, определяющее позицию или строку ключа элемента коллекция.
Итак, если вы просите
Кстати, стилистически я бы сказал, что писатьAddrType(0)
, вы просите нулевого члена коллекция, которая для этой коллекции на основе 1 является ошибкой. Но если вы проситеAddrType("0")
, Вы просите тот член, который был добавлен с ключом"0"
. Любая строка может быть использована в качестве ключа - просто конкретная строка, используемая здесь, является строковым представлением числа.CStr(0)
, а не"0"
не особенно приятно...
Функция CStr() используется для доступа к определенному члену коллекции AddrType. На коллекции можно ссылаться либо по числовому индексу, либо по значению строкового ключа. Таким образом, короткий ответ состоит в том, что целые числа не должны быть преобразованы в строки для доступа к членам коллекции. Почему именно этот кодер решил использовать "0" для значения ключа, неизвестно; это, конечно, не более описательно, чем использование числового индекса, что было бы единственным преимуществом для строкового значения ключа.