Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование C_Sharp.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.5 Mб
Скачать

Массивы

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

Каждый элемент массива хранит один объект и ему присваивается свой номер (индекс). Зная индекс элемента массива, программа может извлечь или обновить нужный ей объект. Следует отметить, что в одном массиве могут храниться объекты базового класса и производных классов. Рассмотрим пример объявления массива из 1 элементов:

int[] mas = new int[10];

В данном примере объявлена ссылка mas на одномерный массив, содержащий 10 ячеек для хранения целых чисел со значением типа int. Также следует учитывать, что в данном примере мы создали не только ссылку, но и сразу же создали сам массив с помощью оператора new, указав размер массива. Без этого программа не смогла бы использовать ссылку для работы с массивом, так как в ней будет храниться значение null.

При объявлении массива не резервируется память, поэтому в объявлении ссылки размеры массива не указываются. После выполнения резервирования памяти оператором new размер массива становится фиксированным.

Типы массивов

Как и большинство языков программирования, язык С# позволяет создавать одномерные и многомерные массивы. Кроме того, возможно создание массивов, содержащих другие массивы.

Одномерные массивы

Одномерны массив возможно представить в виде последовательности ячеек, каждая из которых имеет свой номер. Нумерация массива начинается с 0.

Задание значений элементам массива может быть статическим и динамическим. При статическом задании значений их указывают сразу при создании массива.

int[] mas = {1,7,13};

Заметим, что при данном типе задания элементов массива их индексы указывать не нужно, так как они определяются автоматически исходя из количества элементов в списке инициализации.

При динамическом задании применяется следующий код:

int [] mas1 = new int[10];

mas1[0] = 1;

mas1[1] = 7;

mas1[2] = 13;

Двумерные массивы

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

int[,] TwoDimArray = new int[2,3];

Здесь при объявлении массива мы использовали запятую для того, чтобы указать компилятору на необходимость создания ссылки TwoDimArray на двумерны массив. Кроме того, в операторе new мы указали количество строк и столбцов создаваемого двумерного массива.

Многомерные массивы

Многомерные массивы имеют структуру, похожую на двумерные массивы, но более сложного вида. Как пример, рассмотрим объявление трехмерного массива.

int[,,] MultiDimArray = new int[6,4,8];

Количество запятых должно равняться размерности массива, уменьшенной на 1.

Инициализация многомерных массивов может быть как динамической, так и статической.

Массивы массивов

В языке С# допускается создавать массивы массивов, называемые также несимметричными массивами или ступенчатыми.

Рисунок 1 – пример ступенчатого массива

На рисунке 1 приведен массив, содержащий 5 одномерных массивов разного размера. При необходимости возможно объединение не только одномерных массивов, но и многомерных. Однако работа с подобными структурами требует хорошего пространственного воображения.

Объявление массива массивов выполняется при помощи нескольких пар квадратных скобок.

string[][] JaggedArray = new string[2][];

Так как мы указали размерность данного ступенчатого массива, равную двум, то необходимо инициализировать два массивы строк:

JaggedArray[0] = new string[2];

JaggedArray[1] = new string[4];

Доступ к элементам данного массива осуществляется следующим образом:

JaggedArray[1][2] = “qwerty”;

При помощи первой пары квадратных скобок указывается индекс массива, а при помощи второй – индекс элемента в массиве.

В языке С# допускается создание вложенных ступенчатых массивов.

Например:

string[,,,][,][,,,] CompArray;

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