Поделиться через


Измерения массива в Visual Basic

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

Замечание

Вы можете использовать свойство Rank, чтобы определить количество измерений массива.

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

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

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

Схема, показывающая одномерный массив.

Схема с двумерным массивом.

Схема с трехмерным массивом.

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

Многие массивы имеют только одно измерение, например число людей каждого возраста. Единственное требование для указания элемента — это возраст, для которого этот элемент учитывает количество. Поэтому такой массив использует только один индекс. В следующем примере объявляется переменная для хранения одномерного массива количества возрастов для возрастов от 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 функции.

См. также