русс | укр

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






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.