Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

7.3. Виды массивов и массивы многомерные

Размерностью массива "массив:размерность массива" называют количество

индексов, которое необходимо для получения доступа к отдельному элементу

массива.

Рассмотренные нами одномерные массивы являются частным случаем всего

разнообразия массивов, которые можно использовать в C#. Для этих массивов

размерность равна 1, а размер одномерного массива определяется числом

возможных значений индекса.

В общем случае тип массива "массив:тип массива" объявляется с помощью

конструкции:

тип_не_массива спецификаторы_размерностей

Здесь тип_не_массива это один из следующих типов:

тип_значения

тип_класса

тип_интерфейса

тип_делегата

спецификатор размерности

"спецификатор размерности"

- это [ ]

или

[разделители_размеров];

разделитель_размеров это запятая. Количество запятых на 1 меньше

соответствующей размерности массива.

Спецификаторы размерностей размещаются подряд в нужном количестве

после типа_не_массива. Рассмотрим случай, когда спецификатор размерности

один. Например:

type[R] – тип одномерного массива с R элементами типа type.

Важными частными случаями типов массивов с одним спецификатором

размерности кроме типов одномерных массивов являются "прямоугольные" тип

ы

массивов, то есть двумерные (матрицы), трехмерные («параллелепипеды») и т.д.

Именно такие массивы традиционно принято называть многомерными массивами.

Примеры:

Int [,] dots;

//ссылка на двумерный массив

byte [,,] bits; //ссылка на трёхмерный массив

Для определения объекта – конкретного экземпляра типа многомерных

массивов используется выражение с операцией new

new тип_не_массива [d1,d2, d3 …] инициализатор

Здесь di – размер - количество элементов по соответствующему измерению.

Инициализатор представляет собой вложение конструкций

{список_инициализаторов}.

Элементами такого списка в свою очередь служат заключенные в фигурные

скобки списки инициализаторов. Глубина вложения соответствует размерности

массива. Размерность массива

"массив:размерность массива"

(его ранг) можно

получить с помощью нестатического свойства Rank.

Пример определения с использованием инициализации матрицы (двумерного

массива) с размерами 4 на 2:

int [,] matr = new int[4,2] {{1,2},{3,4},{5,6},{7,8}};

Как и для одномерных массивов при наличии инициализатора конструкцию

new int[4,2] можно опустить.

Так как размеры объектов-массивов задаются выражениями, в которые могут

входить переменные, то допустимы многомерные массивы с динамически

определяемыми

размерами.

В

качестве

примера

рассмотрим

программу,

формирующую единичную матрицу, размеры которой вводит пользователь с

клавиатуры:

// 07_05.cs - двумерный массив - единичная матрица

using System;

class Program

{

static void Main(

)

{

Соседние файлы в папке CSBasicCourse2ndedPodbelsky