На этом шаге мы рассмотрим создание и использование таких массивов.
Размерность массива может быть большей двух. Правда, на практике массивы размерности большей, чем два, используются достаточно редко. Но это вопрос другой.
Итак, многомерные массивы реализуются таким же образом, как одномерные и двумерные массивы: нам нужна переменная массива и, собственно, сам массив. Ссылка на массив записывается в переменную массива. Поэтому, как и во всех предыдущих случаях (с одномерными и двумерными массивами), нам предстоит объявлять переменную массива, создавать сам массив и записывать в переменную массива ссылку на массив.
Переменная для многомерного массива объявляется следующим образом: указывается идентификатор типа для элементов массива, после которого следуют квадратные скобки с запятыми внутри. Количество запятых на единицу меньше размерности массива. Скажем, если мы объявляем переменную для массива размерности 5, то внутри квадратных скобок должны быть 4 запятые. После квадратных скобок с занятыми указывается имя переменной массива. Значением этой переменной можно присвоить ссылку на массив. Он должен быть той же размерности, которая указана при создании неременной массива, а тип элементов массива должен совпадать с типом, указанным при объявлении переменной массива. Например, командой
int[,,] nums;
char [,,,,] symbs;
Многомерный массив создается с помощью оператора new. После оператора new указывается идентификатор типа элементов массива, и в квадратных скобках перечисляются размеры массива по каждому из индексов. Значением инструкции по созданию массива является ссылка на массив. Эта ссылка может быть записана в переменную массива. Например, командой
int[,,] nums = new int [3,4,5];
При создании многомерных массивов можно использовать инициализацию аналогично тому, как мы это делали для одномерных и двумерных массивов. Значением переменной массива присваивается список, элементами которого являются списки, элементами которых также являются списки, и так далее - количество вложений определяется размерностью массива. Например, командой
int [,,] nums = {{{0,0,0,0}, {0,0,0,1}, {0,0,1,0}},
{{0,0,1,1}, {0,1,0,0}, {0,1,0,1}}};
Мы также могли бы использовать команды
int[,,] nums = new int [2,3,4] {{{0,0,0,0}, {0,0,0,1}, {0,0,1,0}}, {{0,0,1,1}, {0,1,0,0}, {0,1,0,1}}};
int[,,] nums = new int [,,] {{{0,0,0,0}, {0,0,0,1}, {0,0,1,0}}, {{0,0,1,1}, {0,1,0,0}, {0,1,0,1}}}; .
Скромный пример, в котором использован многомерный (трехмерный, если точнее) символьный массив, представлен ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr58_1 { class Program { static void Main() { // Трехмерный символьный массив: char[,,] symbs = new char[4, 3, 5]; // Одномерный символьный массив: char[] s = {'б', 'Б', 'b', 'B'}; // Заполнение трехмерного массиза и отображение // значений его элементов. // Цикл по первому индексу: for(int i = 0; i < symbs.GetLength(0); i++){ // Отображение сообщения: Console.WriteLine(" Слой № {0}:", i+1); // Цикл по зторому индексу: for(int j = 0; j < symbs.GetLength(1); j++){ // Цикл по третьему индексу: for(int k = 0; k < symbs.GetLength(2); k++){ // Присваивание значения элементу массива: symbs[i, j, k] = s[i]; // Изменение элемента в одномерном массиве: s[i]++; // Отображение значения элемента массива: Console.Write(symbs[i, j, k] + " "); } // Переход к новой строке: Console.WriteLine(); } // Отображение "линии": Console.WriteLine("----------"); } // Задержка: Console.ReadLine(); } } }
Результат выполнения программы такой.
Рис.1. Результат работы приложения
Командой
char[,,] symbs = new char[4, 3, 5];
symbs[i, j, k] = s[i]; .
На следующем шаге мы рассмотрим массив со строками разной длины.