Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

12.Массивы

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

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

Каждое измерение массива имеет сопоставленную ему длину, выраженную в виде целого неотрицательного числа. Длины измерений не являются частью типа массива, они устанавливаются при создании экземпляра массива с конкретным типом во время выполнения. Длина измерения определяет допустимый диапазон индексов для этого измерения: для измерения с длиной N индексы могут находиться в диапазоне от 0 до N – 1 включительно. Общее количество элементов в массиве равно произведению длин всех его размерностей. Если одно или несколько измерений массива имеют нулевую длину, массив считается пустым.

Элемент массива может иметь любой тип, в том числе тип массива.

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

Тип массива записывается как тип_не_массива, за которым следуют спецификации_ранга:

тип_массива: тип_не_массива спецификации_ранга

тип_не_массива: тип

спецификации_ранга: спецификация_ранга спецификации_ранга спецификация_ранга

спецификация_ранга: [ разделители_размерностейнеобязательно ]

разделители_размерностей: , разделители_размерностей ,

Тип_не_массива является одним из типов, которые сами по себе не являются типом_массива.

Ранг типа массива задается левой спецификацией_ранга в типе_массива: спецификация_ранга указывает, что массив имеет ранг, равный единице плюс число меток «,» в этой спецификации.

Тип элемента массива представляет собой тип, полученный в результате удаления крайней левой спецификации_ранга:

  • Тип массива в форме T[R] указывает массив с рангом R и типом элемента (типом_не_массива) T.

  • Тип массива в форме T[R][R1]...[RN] указывает массив с рангом R и типом элемента T[R1]...[RN].

В результате данные спецификации_ранга считываются слева направо перед последним типом элемента (типом_не_массива). Тип int[][,,][,] указывает одномерный массив трехмерных массивов из двумерных массивов значений с типом int.

Во время выполнения значение типа массива может быть равно null или может содержать ссылку на экземпляр массива этого типа.

12.1.1Тип System.Array

Тип System.Array является абстрактным базовым типом для всех типов массива. Выполняется неявное преобразование ссылок (§6.1.6) из любого типа в тип System.Array, а также явное преобразование ссылок (§6.2.4) из типа System.Array в любой тип массива. Обратите внимание, что тип System.Array сам по себе не является типом_массива. Это тип_класса, на основе которого создаются все типы_массива.

Во время выполнения значение с типом System.Array может быть равным null или содержать ссылку на экземпляр с любым типом массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]