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