Theory and Tasks for Students - Spring 2019
Массивы

Массив (Array) - отдельный участок памяти, состоящий из элементов одинакового размера. Они нужны для тех случаев, когда заводить вручную огромное количество похожих переменных не целесообразно. Массив можно состоять из любого типа, например, массив целых чисел int[], массивы флагов bool[], массив вещественных чисел с двойной точностью double[], массив генераторов случайных чисел Random[] и т.п. Однако переменная такого типа не может использоваться, пока в неё не записана ссылка на массив, будь то созданный сейчас или раньше: int[] a = new int[1000]; int[] b = a; В этом примере создаётся массив из 1000 элементов и ссылка на него записывается в переменную a. В переменную b записывается та же ссылка - таким образом, они указывают на один и тот же массив.

Обращение к элементам массива происходит с помощью оператора индексации [], как и в случае со строками. Нумерация элементов начинается с 0. В дополнение к предыдущему блоку: a[0] = 1; a[1] = 100; if (a[0] == b[0]) { Console.WriteLine("same"); } Этот пример демонстрирует то, что переменные a и b указывают на один и тот же массив.

Для перебора элементов массива обычно используют цикл for. Следующий код запишет в массив a последовательность натуральных чисел: for (int i = 0; i < a.Length; i++) { a[i] = i + 1; } У массивов доступно свойство Length, содержащее в себе длину массива. Лучше использовать это свойство, чем числовые константы или сохранённое в переменную количество элементов.

Вывод массива так же происходит по-элементно, нельзя написать Console.WriteLine(a): for (int i = 0; i < a.Length; i++) { Console.Write(a[i] + " "); } Console.WriteLine(); Вместо прибавления к число строки-разделителя можно использовать форматированный вывод: for (int i = 0; i < a.Length; i++) { Console.Write("{0}, ", a[i]); } Console.WriteLine(); В фигурных скобках указывается номер аргумента после строки формата, таким образом Console.Write("{0}{1}{2}{0}{2}", "a", "b", "c") выдаст abcac.

Альтернативно по всему массиву можно пройтись с помощью цикла foreach, однако в этом случае элементы массива изменять нельзя: foreach (int item in a) { Console.Write("{0}, ", item); } Console.WriteLine(); Часто можно опустить название типа, если переменная тут же инициализируется каким-либо однозначным значением, например: var temp = 100; var rad = 0.5m; var arr = new int[temp]; foreach (var item in arr) {} Настоятельно рекомендуется в большинстве случаев пока что использовать конкретные имена типов.