Доступ к элементам массива

      Комментарии к записи Доступ к элементам массива отключены

Массивы и кортежи

• Простые массивы

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

• Зубчатые массивы

• Класс Array

• Массивы в качестве параметров

• Перечисления

• Кортежи

• Структурное сравнение

Для работы с множеством объектов одного и того же типа можно использовать коллекции (см. раздел 6.10) и массивы. В C# предусмотрена специальная нотация для объявления и использования массивов. Здесь “за кулисами” вступает в действие класс Array, предоставляющий несколько методов для сортировки и фильтрации-элементов внутри массива. С помощью перечислителя (enumerator) можно выполнить итерацию по всем элементам массива. Кроме того, в .NET 4 появился новый тип Tuple (кортеж), который может использоваться для комбинации множества объектов разного типа (см. подраздел “Кортежи” далее в этом разделе).

Простые массивы

При работе с множеством объектов одного и того же типа можно использовать массив. Массив — это структура данных, содержащая множество элементов одного и того же типа.

Объявление массива

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

int[] myArray;

Инициализация массива

После объявления массива должна быть выделена память для хранения всех его элементов. Массив является ссылочным типом, поэтому память для него должна распределяться в куче. Это делается инициализацией переменной массива с помощью операции new с указанием типа и количества элементов в массиве. Вот как специфицируется размер массива:

myArray = new int [ 4 ] ;

После такого объявления и инициализации переменная myArray ссылается на четыре целочисленных значения, распределенные в управляемой куче (рис. 6.1).

После изначальной спецификации размер массива не может быть изменен без копирования всех элементов. Если заранее не известно, сколько элементов должно содержаться в массиве, следует использовать коллекцию. Коллекции рассматриваются в разделе 6.10.

Рисунок 6.1 — Переменная myArray ссылается на четыре целочисленных значения в управляемой куче

Объявлять и инициализировать массив можно также в одной строке, а не в нескольких: int[] myArray = new int[4];

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

int [] myArray = new int[4] {4, 7, 11, 2 };

Если вы инициализируете массив, применяя фигурные скобки, то размер массива можно не указывать, поскольку компилятор определит его самостоятельно:

int[] myArray = new int[] {4, 7, 11, 2};

При использовании компилятора C# существует еще более короткая форма. Написать объявление и инициализацию массива можно с помощью фигурных скобок. Код, сгенерированный компилятором в следующем случае, будет таким же, как и в предыдущем:

int[] myArray = {4, 7, 11, 2};

Доступ к элементам массива

После того, как массив объявлен и инициализирован, к его элементам можно обращаться с использованием индексатора (indexer). Массивы поддерживают только целочисленные индексаторы.

Индексатору передается номер элемента для доступа к массиву. Индексатор всегда начинается со значения 0 для первого элемента. Самый больший номер, который можно передать индексатору, равен общему количеству элементов в массиве минус 1, поскольку нумерация начинается с нуля. В следующем примере массив myArray объявляется и инициализируется четырьмя целыми значениями. К элементам можно обращаться со значениями индексатора 0, 1, 2 и 3.

int[] myArray = new int[] {4, 7, 11, 2};

int vl = myArray[0]; // читать первый элемент

int v2 = myArray[l]; // читать второй элемент

myArray [3] = 44; // изменить четвертый элемент

Если значению индексатора, не соответствует никакого элемента, генерируется исключение типа IndexOutOfRangeException.

Чтобы узнать количество элементов в массиве, можно воспользоваться свойством Length, как показано в приведенном ниже операторе:

for (int i = 0; imyArray.Length; i++)

{

Console.WriteLine(myArray[i]);

}

Вместо применения оператора for для прохождения по всем элементам массива можно также использовать оператор foreach:

foreach (int val in myArray)

{

Console.WriteLine(val);

}

Оператор foreach использует интерфейсы IEnumerable и IEnumerator, о которых речь пойдет дальше в этом разделе.

Статьи к прочтению:

Объявление массива и доступ к элементам массива (MQL4)


Похожие статьи: