Array Dimensions in Visual Basic

Измерение — это направление, в котором можно изменить спецификацию элементов массива. Массив, содержащий общий объем продаж для каждого дня месяца, имеет одно измерение (день месяца). Массив, содержащий общий объем продаж по отделу для каждого дня месяца, имеет два измерения (номер отдела и день месяца). Число измерений массива называется его рангом.

Примечание.

Свойство можно использовать Rank для определения количества измерений массива.

Работа с измерениями

Укажите элемент массива, указав индекс или подстрок для каждого из его измерений. Элементы являются смежными по каждому измерению от индекса 0 до самого высокого индекса для этого измерения.

На следующих рисунках показана концептуальная структура массивов с разными рангами. Каждый элемент на иллюстрациях показывает значения индекса, к которым он обращается. Например, можно получить доступ к первому элементу второй строки двухмерного массива, указав индексы (1, 0).

Diagram that shows a one-dimensional array.

Diagram that shows a two-dimensional array.

Diagram that shows a three-dimensional array.

Одно измерение

Многие массивы имеют только одно измерение, например число людей каждого возраста. Единственное требование указать элемент — возраст, для которого этот элемент содержит число. Поэтому такой массив использует только один индекс. В следующем примере объявляется переменная для хранения одномерного массива возрастов в возрасте от 0 до 120 лет.

Dim ageCounts(120) As UInteger

Два измерения

Некоторые массивы имеют два измерения, например количество офисов на каждом этаже каждого здания в кампусе. Для спецификации элемента требуется как номер здания, так и этаж, и каждый элемент содержит счетчик для этого сочетания здания и пола. Поэтому такой массив использует два индекса. В следующем примере объявляется переменная для хранения двухмерного массива офисных счетчиков для зданий от 0 до 40 и этажей от 0 до 5.

Dim officeCounts(40, 5) As Byte

Двухмерный массив также называется прямоугольным массивом.

Три измерения

Несколько массивов имеют три измерения, такие как значения в трехмерном пространстве. Такой массив использует три индекса, которые в данном случае представляют координаты x, y и z физического пространства. В следующем примере объявляется переменная для хранения трехмерного массива температур воздуха в различных точках в трехмерном объеме.

Dim airTemperatures(99, 99, 24) As Single

Более трех измерений

Хотя массив может иметь до 32 измерений, редко имеет более трех размеров.

Примечание.

При добавлении измерений в массив общий объем хранилища, необходимого массиву, значительно увеличивается, поэтому используйте многомерные массивы с осторожностью.

Использование различных измерений

Предположим, что вы хотите отслеживать объемы продаж за каждый день текущего месяца. Можно объявить одномерный массив с 31 элементами, по одному для каждого дня месяца, как показано в следующем примере.

Dim salesAmounts(30) As Double

Теперь предположим, что вы хотите отслеживать одну и ту же информацию не только для каждого дня месяца, но и для каждого месяца года. Вы можете объявить двухмерный массив с 12 строками (в течение месяцев) и 31 столбцами (в течение дней), как показано в следующем примере.

Dim salesAmounts(11, 30) As Double

Теперь предположим, что вы решили хранить данные массива более одного года. Если вы хотите отслеживать объемы продаж в течение 5 лет, можно объявить трехмерный массив с 5 уровнями, 12 строками и 31 столбцами, как показано в следующем примере.

Dim salesAmounts(4, 11, 30) As Double

Обратите внимание, что, поскольку каждый индекс зависит от 0 до максимального значения, каждое измерение salesAmounts объявляется как одно меньше требуемой длины для этого измерения. Обратите внимание, что размер массива увеличивается при каждом новом измерении. Три размера в предыдущих примерах: 31, 372 и 1860 элементов соответственно.

Примечание.

Массив можно создать без использования Dim инструкции или New предложения. Например, можно вызвать CreateInstance метод или другой компонент может передать код массиву, созданному таким образом. Такой массив может иметь нижнюю границу, отличное от 0. Вы всегда можете проверить нижнюю границу измерения с помощью GetLowerBound метода или LBound функции.

См. также