Массив – множество однотипных элементов. Это тоже ТИП. Любой массив наследует классу (является производным от класса – о принципе наследования позже) System.Array.
Существует несколько способов сознания группировок однотипных объектов:
§ объявление множества однотипных элементов в рамках перечисления (класса, структуры),
§ определение собственно массива.
Принципиальная разница состоит в следующем:
§ доступ к данным-членам перечисления, класса, массива производится ПО имени данного-члена (элементы перечисления, класса или структуры ИНОГДА могут быть одного типа, но каждый член всегда имеет собственное имя),
§ доступ к элементу массива осуществляется по индексу (элементы массива ВСЕГДА однотипны, располагаются в contiguous memory) при этом допускается случайный доступ.
§
Многомерные массивы. Массив размерности (или ранга) N (N определяет число измерений массива) – это Массив массивов (или составляющих массива) ранга N-1. Составляющие массива – это массивы меньшей размерности, являющиеся элементами данного массива. Составляющая массива – это либо массив, либо элемент массива.
РАЗДЕЛИТЕЛЬ – пробел, несколько пробелов, символ табуляции, символ перехода на новую строку, комбинация символов “новая строка/возврат каретки” и прочая икебана…
При объявлении массива действуют следующие правила:
§ Спецификатор размерности, состоящий из одного неявного спецификатора [] специфицирует составляющую массива размерности 1.
§ Спецификатор размерности, состоящий из N неявных спецификаторов [ ,,, … ,] специфицирует составляющую массива размерности N.
§ Длина списка спецификаторов размерности массива не огранена.
При этом информация о типе составляющих массива в объявлении массива определяется на основе типа массива и списка его спецификаторов размерности.
Синтаксис объявления массива (ссылки на массив) позволяет специфицировать массивы произвольной конфигурации без какого-либо намёка на количественные характеристики составляющих массивы элементов.
Ниже представлены способы ОБЪЯВЛЕНИЯ ссылок на массивы РАЗЛИЧНОЙ размерности и конфигурации.
// Объявлены ссылки на массивы размерности 3 элементов типа int.
// Это массивы составляющих, представляющих собой массивы элементов
// размерности 2 одномерных массивов элементов типа int.
// Размеры всех составляющих массивов одного уровня равны
// между собой (так называемые “прямоугольные” массивы).
int[,,] arr0;
int[ , , ] arr1;
int[
,
,
] arr2;
// Объявлена ссылка на
// ОДНОМЕРНЫЙ(!) массив
// ОДНОМЕРНЫХ(!) элементов массива, каждый из которых является
// ОДНОМЕРНЫМ(!) массивом элементов типа int.
int[][][] arr3;
// Объявлена ссылка на
// ОДНОМЕРНЫЙ(!) массив составляющих, каждая из которых является
// ДВУМЕРНЫМ(!) массивом массивов элементов типа int.
// При этом никаких ограничений на размеры “прямоугольных” составляющих
// данное объявление не содержит. У всех составляющих могут быть разные
// размеры.
int[][,] arr4;
// Объявлена ссылка на
// ДВУМЕРНЫЙ(!) массив составляющих, каждая из которых является
// ОДНОМЕРНЫМ(!) массивом элементов типа int.
// При этом никаких ограничений на размеры одномерных составляющих
// данное объявление не содержит. У всех составляющих могут быть разные
// размеры.
int[,][] arr5;
Рассмотренный синтаксис объявления и инициализации массива позволяет определять ДВЕ различных категории массивов:
§ простые (прямоугольные) массивы,
§ jagged (зубчатый, зазубренный; неровно оторванный; пьяный; находящийся под влиянием наркотиков) массивы.
Особенности инициализации и использования массивов разных категорий рассматриваются дальше.