C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
Цикл foreach C#
Новим видом циклу, не успадкованим від С++, є цикл foreach, зручний при роботі з масивами, колекціями та іншими подібними контейнерами даних. Його синтаксис:
foreach(тип ідентифікатор in контейнер) оператор
Цикл працює в повній відповідності зі своєю назвою - тіло циклу виконується для кожного елемента в контейнері. Тип ідентифікатора повинен бути узгоджений з типом елементів, що зберігаються в контейнері даних. Передбачається також, що елементи контейнера (масиву, колекції) упорядковані. На кожному кроці циклу ідентифікатор, що вказує поточний елемент контейнера, отримує значення чергового елемента у відповідності з порядком, встановленим на елементах контейнера. З цим поточним елементом і виконується тіло циклу виконується стільки разів, скільки елементів знаходиться в контейнері. Цикл закінчується, коли повністю перебрані всі елементи контейнера.
Серйозним недоліком циклів foreach у мові C# є те, що цикл працює тільки на читання, але не на запис елементів. Так що наповнювати контейнер елементами доводиться з допомогою інших операторів циклу.
У наведеному нижче прикладі показана робота з тривимірним масивом. Масив створюється з використанням циклів типу for, а при знаходженні суми його елементів, мінімального і максимального значення використовується цикл foreach:
/// < summary> /// Демонстрація циклу foreach. Обчислення суми, /// максимального і мінімального елементів /// тривимірного масиву, заповненого випадковими числами. /// < /summary> public void SumMinMax() { int [,,] arr3d = new int[10,10,10]; Random rnd = new Random(); for (int i =0; i < 10; i++) for (int j =0; j<10; j++) for (int k =0; k<10; k++) arr3d[i,j,k]= rnd.Next(100); long sum =0; int min=arr3d[0,0,0], max=arr3d[0,0,0]; foreach(int item in arr3d) { sum +=item; if (item > max) max = item; else if (item < min) min = item; } Console.WriteLine("sum = {0}, min = {1}, max = {2}", sum, min, max); }//SumMinMax
Переглядів: 2185 |