Являются ли индексы массива 0 основаны на VB6?
Я просматриваю автоматический перевод кода VB6 на С#, а конвертер переводил someArray(3)
в someArray[3]
. Но в соответствии с старой кодовой документацией он должен выбрать третий элемент, а не четвертый, как он делает в переведенной версии.
Являются ли индексы массива 0 основаны на VB6? Или они начинаются с 1?
Ответы
Ответ 1
Да - массивы (обычно) 0 основаны на VB6
Исключения из этого - это когда явный синтаксис Dim someArray(1 To 10) as Int
был использован или когда Option Base 1
объявлен в верхней части модуля кода.
Это Collections
, которые не являются - при прохождении через объекты Collection
я уверен, что они основаны на 1.
Ответ 2
Короткий ответ заключается в том, что нижние границы массива - это то, что вы им говорите.
По умолчанию используется base 0
(если не переопределено Option Base 1
), но вы можете объявить нижнюю границу для любого значения (Dim arr(-42 To 42)
имеет значение как Dim(3)
).
Кроме того, если массив возвращается некоторым объектом, его нижняя граница - это то, к чему этот объект устанавливает. Например, ссылка Excel
Range.Value
вернет массив 1
.