Программирование >>  Программирование с использованием ajax 

1 ... 35 36 37 [ 38 ] 39 40 41 ... 396



Рис. 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, однако, присваивание значений элементам массива является возможным.

Многомерные массивы

Многомерным называется такой массив, в котором для получения доступа к элементам применяется несколько индексов. Например, предположим, что требуется нарисовать карту высот холма по замеренным позициям.



hillHeight [0,1]

hillHeight [0,2]

hillHeight [0,3]

1 i 1

hillHeight [1,0]

hillHeight [1.1]

hillHeight [1.2]

hillHeight [1.3]

hillHeight [2,0]

hillHeight [2.1]

hillHeight [2.2]

hillHeight [2,3]

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.



1 ... 35 36 37 [ 38 ] 39 40 41 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика