|
Программирование >> Программирование с использованием ajax
Рис. 5.9. Приложение ChOSExO4 в действии Описание полученных результатов в приведенном коде сначала создается массив string с тремя значениями, которые затем отображаются в цикле for. Обратите внимание, что использование f riendNames . Length обеспечивает доступ к информации о количестве элементов в массиве: Console.WriteLine( Неге are {0} of my friends: , friendNames.Length); Такой подход является удобным способом получения размера массива. Процесс вывода значений в массиве for можно легко сделать неправильным. Например, попробуйте изменить < на <=: for (i = 0; i <= friendNames.Length; i++) Console.WriteLine(friendNames[i]); Компиляция этого кода приведет к получению такого диалогового окна, как показано на рис. 5.10. I femexOutOfftAngeEicteptkm w*s unh n Index we J outjide the bounds of the array Tioubl thooting lips: IfHjtf lift *ii t t*--? тцтггцт I ot a I л M th>n the lift iie.i Mate Jure the ina? no< a utQi.t numbfr j Make %utt data column паше are correct. I Gtt generel help for thi5 enceptiofl. jtarrh for mofr Hfip Onhne... Acliom: V)ev / Detail Copy e ception tletan to th* clipboard Puc. 5.10. Диалоговое окно с сообщением об ошибке выхода индекса за допустимые пределы static void Main(string [ ] args) { string[] friendNames = { Robert Barwell , Mike Parry , Jeremy Beacock }; int i; Console.WriteLine( Here are {0} of my friends: , friendNames.Length); / / Вывод одного из друзей for (i = 0; i < friendNames.Length; i++) { Console.WriteLine(friendNames[i]); Console.ReadKey0; 3. Запустите приложение. На рис. 5.9 показан результат, который должен получиться. На этом рисунке видно, что была предпринята попытка получить доступ к f riendNames [ 3 ]. Напомним, что нумерация индексов в массиве начинается с О, а это значит, что в данном случае последним элементом является f riendNames [2]. Следовательно, получается, что элемент f riendNames [3] выходит за рамки массива, а все попытки получить доступ к элементам, выходящими за пределы размера массива, приводят к невозможности выполнения кода. Однако существует еще один более гибкий способ получения доступа к членам массива и заключается он в применении циклов foreach. Циклы foreach Цикл foreach позволяет обращаться к каждому элементу в массиве с помощью такого простого синтаксиса: foreach ( <базовый тип> <имя> in <массив> ) { II можно использовать <имя> для каждого элемента Этот цикл будет осуществлять проход по всем элементам и помещать каждый из них по очереди в переменную <имя> безо всякого риска получения доступа к недопустимым элементам. Такой подход позволяет не беспокоиться о том, сколько элементов содержится в массиве, и быть уверенным, что каждый из них будет использован в цикле. В случае его применения код из предыдущего примера можно изменить следующим образом: static void Main(string [ ] args) { string[] friendNames = ( Robert Harwell , Mike Parry , Jeremy Beacock }; Console.WriteLine( Here are {0} of my friends: , friendNames.Length) ; foreach (string friendName in friendNames) { Console.WriteLine(friendName); Console.ReadKey(); Вывод этого кода выглядит точно так же, как и вывод кода, который приводился в предыдущем практическом занятии. Главное отличие между применением цикла foreach и стандартного цикла for состоит в том, что foreach предоставляет к содержимому массива доступ только для чтения, что не позволяет изменять значения элементов. То есть выполнение следующей операции является недопустимым: foreach (string friendName in friendNames) { friendName = Rupert the bear ; Попытка сделать подобное приведет к невозможности компиляции. В случае использования простого цикла for, однако, присваивание значений элементам массива является возможным. Многомерные массивы Многомерным называется такой массив, в котором для получения доступа к элементам применяется несколько индексов. Например, предположим, что требуется нарисовать карту высот холма по замеренным позициям.
Puc. 5.11. Графическое представление массива hillHeight Позицию можно задать двумя координатами - х и у. Эти две координаты можно представить в виде индексов, дабы в массиве с именем hi 11 Height могли храниться значения высоты, соответствующие каждой tiape координат. В такой ситуации может помочь многомерный массив. Массивы такого типа объявляются следующим образом: <базовый тип> [,] <имя>; Массивы с большим количеством измерений объявляются с использованием большего количества запятых: <базовый тип> [, , ,] <имя>; Эта строка показывает, как объявить четырехмерный массив. Для присваивания значений применяется похожий синтаксис, в котором запятые служат для разделения размеров. Объявить и инициализировать двухмерный массив hillHeight с базовым типом double и размерностью координаты х, равной 3, а координаты у - 4, можно следующим образом: double [,] hillHeight = new double[3,4]; В качестве альтернативного варианта для начального присваивания можно использовать литеральные значения. Эти значения должны иметь вид вложенных блоков, заключенных в фигурные скобки, и быть отделены друг от друга запятыми: double[,] hillHeight = {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, б}}; Данный массив имеет те же самые измерения, что и предыдущий, т.е. три строки и четыре столбца. Благодаря предоставлению литеральных значений, эти измерения определяются неявным образом. Для получения доступа к отдельным элементам многомерного массива указываются отделенные запятой индексы: hillHeight[2,1] Далее этими элементами можно манипулировать так же, как и всеми остальными. Приведенное выражение подразумевает доступ ко второму элементу третьего вложенного массива, который был определен ранее (т.е. к значению 4). Напомним, что отсчет начинается с О, а первое число представляет вложенный массив. Другими Словами, первое число специфицирует пару фигурных скобок, а второе - на элемент внутри этой пары скобок. Графическим образом представить этот массив можно так, как показано на рис. 5.11.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |