Массивы
Массивы в С# несколько отличаются от других С-подобных языков.
Пример первый:
int [ ] к; //к - массив
k=new int [3]; //Определяем массив из 3 целых
к[0]=-5; к[1]-4; к[2]=55; //Задаем элементы массива
//Выводим третий элемент массива
Console.WriteLine(к[2] .ToString ());
Обратите внимание на некоторые особенности. Во-первых, массив определяется именно как
int[] к;
а не как один из следующих вариантов:
int k[]; //Неверно!
int k [3]; //Неверно !
int [3] к; //Неверно!
Во-вторых, так как массив представляет собой ссылочный объект, то для создания массива необходима строка
k=new int [3];
Именно в ней мы и определяем размер массива. Кроме того, возможны конструкции вида
int [] k = new int [3];
Элементы массива можно задавать сразу при объявлении. Например:
int [] к = {-5, 4, 55} ;
приведенные конструкции применимы не только к типу int и не только к массиву размера 3.
В С#, как и в C/C++, нумерация элементов массива идет с нуля. Таким образом, в нашем примере начальный элемент массива — это k[0], a последний — к[2]. Элемента к[3], нет.
Теперь переходим к многомерным массивам. Вот так задается двумерный массив:
int [,] k = new int [2, 3];
Обратите внимание, что пара квадратных скобок только одна. В нашем примере у массива 6 (=2*3) элементов (к[0,0] — первый, к[1,2] — последний).
Аналогично мы можем задавать многомерные массивы. Вот пример трехмерного массива:
int [] к = 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-й элемент нашего ступенчатого массива
//Это опять массив и в нем 8 элементов
k[1]=new int[8];
k[1][7]=100; //записываем 100 в последний элемент массива
Обратите внимание, что у ступенчатых массивов мы задаем несколько пар квадратных скобок (по размерности массива). И точно так же мы что-нибудь делаем с элементами массива — записываем, читаем и т. п.
Самая важная и интересная возможность ступенчатых массивов — это их «непрямоугольность». Так, в приведенном выше примере в первой «строке» массива к три целых числа, а во второй — восемь. Часто это оказывается очень кстати.
Инструкция foreach, in
В C# также предусмотрена инструкция foreach. Она обеспечивает простой и понятный способ выполнения итерации элементов в массиве.
Синтаксис инструкции foreach:
foreach (int ИндексМассива in ИмяМассива)
int ИндексМассива – тип и имя переменной для номера элемента массива.
Слово in – в.
ИмяМассива – имя массива.
Пример. Следующий код создает массив numbers и осуществляет его итерацию с помощью инструкции foreach.
int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers)
{
System.Console.Write("{0} ", i);
}
// Output: 4 5 6 1 2 3 -2 -1 0
Этот же метод можно использовать для итерации элементов в многомерных массивах
Однако для лучшего контроля элементов в многомерных массивах можно использовать вложенный цикл for.