Индексы массива основаны на 0 в VB6? - PullRequest
17 голосов
/ 09 января 2012

Я проверяю автоматический перевод кода VB6 на C # и преобразователь переводит someArray(3) в someArray[3]. Но в соответствии со старой документацией кода следует выбрать третий элемент, а не четвертый, как это делается в переведенной версии.

Основаны ли индексы массива на 0 в VB6? Или они начинаются с 1?

Ответы [ 2 ]

15 голосов
/ 09 января 2012

Да - массивы (как правило) 0 основаны на VB6

. Исключениями являются случаи, когда используется явный синтаксис Dim someArray(1 To 10) as Int, или когда Option Base 1 объявлен в верхней части модуля кода..

Это Collections, что не так - когда вы просматриваете Collection объекты, я почти уверен, что они основаны на 1.

6 голосов
/ 09 января 2012

Короткий ответ: нижние границы массива - это то, что вы говорите им быть.

по умолчанию является базовым 0 (если не переопределено Option Base 1), но вы можете объявить нижнюю границу для любого значения, которое вы хотите (Dim arr(-42 To 42) является действительным как Dim(3)).

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

...