Индексы массива основаны на 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)).

Кроме того, если массив возвращается каким-либо объектом, его нижняя граница равна тому, что этот объект устанавливает для него. Например, ExcelRange.Value ссылка вернет 1 основанный массив.

Другие вопросы по тегам