Основы C#. Урок 6. Массивы в C#
Массивы в C# несколько отличаются от других C-подобных языков. Начнем сразу с примеров. Пример первый:
... int[] k; //k - массив k=new int [3]; //Определяем массив из 3-х целых k[0]=-5; k[1]=4; k[2]=55; //Задаем элементы массива //Выводим третий элемент массива Console.WriteLine(k[2].ToString()); ...
Смысл приведенного фрагмента ясен из комментариев. Обратите внимание на некоторые особенности. Во-первых, массив определяется именно как
int[] k;
а не как один из следующих вариантов:
int k[]; //Неверно!
int k[3]; //Неверно!
int[3] k; //Неверно!
Во-вторых, так как массив представляет из себя ссылочный объект, то для создания массива необходима строка
k=new int [3];
Именно в ней мы и определяем размер массива. Хотя, вообще говоря, возможны конструкции вида
int[] k = new int [3];
Элементы массива можно задавать сразу при объявлении. Вот пример:
int[] k = {-5, 4, 55};
Разумеется, приведенные конструкции применимы не только к типу int и не только к массиву размера 3.
В C#, как и в C/C++, нумерация элементов массива идет с нуля. Таким образом в нашем примере начальный элемент массива - это k[0], а последний - k[2]. Элемента k[3], разумеется, нет.
Теперь переходим к многомерным массивам. Вот так задается двумерный массив:
int[,] k = new int [2,3];
Обратите внимение, что пара квадратных скобок только одна. Естественно, что в нашем примере у массива 6 (=2*3) элементов (k[0,0] - первый, k[1,2] - последний).
Аналогично мы можем задавать многомерные массивы. Вот пример трехмерного массива:
int[,,] k = new int [10,10,10];
А вот так можно сразу инициализировать многомерные массивы:
int[,] k = {{2,-2},{3,-22},{0,4}};
Приведенные выше примеры многомерных массивов называются прямоугольными. Если их представить в виде таблицы (в двумерном случае), то массив будет представлять из себя прямоугольник.
Наряду с прямоугольными массивами существуют так называемые ступенчатые. Вот пример:
//Объявляем 2-мерный ступенчатый массив int[][] k = new int [2][]; //Объявляем 0-й элемент нашего ступенчатого массива //Это опять массив и в нем 3 элемента k[0]=new int[3]; //Объявляем 1-й элемент нашего ступенчатого массива //Это опять массив и в нем 4 элемента k[1]=new int[4]; k[1][3]=22; //записываем 22 в последний элемент массива ...
Обратите внимание, что у ступенчатых массивов мы задаем несколько пар квадратных скобок (столько, сколько размерность у массива). И точно так же мы что-нибудь делаем с элементами массива - записываем, читаем и т. п.
Самая важная и интересная возможность у ступенчатых массивов - это их "непрямоугольность". Так, в приведенном выше примере в первой "строке" массива k три целых числа, а во второй - четыре. Часто это оказывается очень к месту.