Масивы
Одномерные массивы int[] a1 = new int[10]; int[] a2 = {1, 2, 3, 4}; int[] a3 = new int[]{1, 2, 3, 4}; int[] a4 = new int[4]{1, 2, 3, 4}; int size = 10; int[] a1 = new int[size]; int[] a4 = new int[size]{1, 2, 3, 4}; Доступ к элементам так же, как и в С – через оператор «индекс массива». Для указания размера массива обычно используются константы, но это может быть и переменная (или выражение), если не определяются значения его элементов.
Пример. Создадим класс для работы с одномерным массивом, а именно для генерации значений массива и для вывода их DataGridView, а имени в Label.
Многомерные массивы Двумерные массивы int[,] aa5 = new int[3,4]; int[,] aa6 = {{1,2},{4,5},{7,8}}; int[,] aa7 = new int[3,2]{{1,2},{4,5},{7,8}}; Инициализация двумерных массивов
Пример. Создадим класс для работы с двумерными массивами, а именно для генерации значений массивов, для вывода их DataGridView, а имени в Label и для перемножения массивов.При этом размерность массивов будет задаваться динамически.
Массивы массивов (Невыровненные массивы (jagged arrays),ступенчатые массивы, Изрезанные массивы) int[][] ja = new int[3][]; ja[0] = new int[7]; ja[2] = new int[5]; ja[1][3] = 12;
Пример. Создадим класс для вывода на экран значений ступенчатого массива в DataGridView. В самом массиве будет храниться генеалогическое древо.
Цикл foreach Для работы с массивами может использоваться цикл foreach, который перебирает все элементы массива. Его синтаксис: foreach(тип_элемента имя_тек_эл in имя_массива) тело цикла для одномерного массива foreach(int e in a4) Console.WriteLine(e); для прямоугольного массива foreach(int e in aa7) Console.WriteLine(e); Для ступенчатых массивов должны использоваться вложенные циклы: foreach(int[] e1 in ja) foreach(int e2 in e1) Console.WriteLine(e2);
Передача массивов в методы, массивы как возвращаемые значения Массив – это ссылочный тип. При определении формальных параметров не указывается число элементов массива, но указывается его тип: одномерный, прямоугольный, не выровненный. void M1(int [] a) void M2(int [,] a) void M3(int [][] a) В остальном синтаксис такой же как для обычных параметров. Также могут быть указаны атрибуты для обозначения входного, выходного и параметра по ссылке. void M1(int [] a) { a[2] = 5; } void M1(int [] a) { a = new int[4]{5, 6, 7, 8}; } Массив также может быть возвращаемым значением. int[] NewArray(int i) { return new int[i]; }
Атрибут params Предположим нам требуется определить метод, который выводит на экран произвольное количество целых чисел. Можно воспользоваться предыдущим способом. Но можно обойтись и без явного создания массива. Для этого параметр должен быть описан с атрибутом params void Print(params int[] nums) { foreach(int e in nums) Console.WriteLine(e); } Данный параметр это обязательно одномерный массив, такой параметр у метода может быть только один, и если он есть, то в списке параметров указывается последним.