[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Цикл foreach у C# використовується для ітерації через елементи колекції (наприклад, масиву, списку, словника тощо) без явного використання індексів або ітераторів. Він забезпечує більш зручний спосіб роботи з елементами колекції, який читається.
Синтаксис циклу foreach має такий вигляд:
1 2 3 4 |
foreach (var item in collection) { // Код, выполняющийся для каждого элемента item в коллекции } |
Тут collection – це колекція (масив, список тощо), а item – тимчасова змінна, яка приймає значення кожного елемента колекції на кожній ітерації.
Принцип роботи
Цикл foreach у C# є синтаксичним цукром, тобто він надає зручніший спосіб роботи з елементами колекції, приховуючи деталі роботи нижчого ітераційного процесу.
1) Перш ніж почати виконання циклу, відбувається перевірка, чи є колекція (collection) null. Якщо це так, цикл не буде виконуватися.
2) Цикл foreach використовує інтерфейс IEnumerable або IEnumerable<T> (залежно від типу колекції), щоб отримати ітератор, який буде проходити по елементах колекції. Цей ітератор має метод GetEnumerator(), який повертає об’єкт, що реалізує інтерфейс IEnumerator або IEnumerator<T>.
3) При початку циклу ітератор викликає метод MoveNext(), щоб перейти до першого елемента колекції.
4) Після переходу до чергового елемента колекції, ітератор використовує властивість Current (або метод Current у випадку IEnumerator) для отримання поточного елемента. Це значення буде передано в змінну (item), використовувану всередині блоку foreach.
5) Виконується код, що знаходиться всередині блоку foreach. Цей код буде виконуватися для кожного елемента колекції.
6) Після завершення виконання блоку коду ітератор викликає знову метод MoveNext(), щоб перейти до наступного елемента колекції.
7) Цей процес (кроки 4-6) триватиме доти, доки метод MoveNext() не поверне false, вказуючи на те, що всі елементи колекції були оброблені. Після цього цикл завершиться.
8) Після завершення циклу, ітератор може звільняти будь-які ресурси або обробляти завершальні операції (наприклад, закриття файлу або звільнення пам’яті).
Приклади використання
Використання циклу foreach для масиву:
1 2 3 4 5 6 |
int[] numbers = { 1, 2, 3, 4, 5 }; foreach (int number in numbers) { Console.WriteLine(number); } |
Використання циклу foreach для списку:
1 2 3 4 5 6 |
List<string> names = new List<string> { "Alice", "Bob", "Charlie" }; foreach (string name in names) { Console.WriteLine(name); } |
Цикл foreach автоматично пройде через усі елементи колекції, починаючи з першого і закінчуючи останнім. Зверніть увагу, що всередині блоку циклу foreach змінну item (або будь-яке інше ім’я змінної, яке ви виберете) не можна змінити, оскільки це тільки копія елемента, а не посилання на нього.
Цикл foreach особливо корисний, коли вам необхідно перебрати всі елементи колекції та виконати деяку операцію для кожного з них без необхідності керування індексами або станом ітератора.