В тази статия ще научим за циклите foreach (алтернатива на цикъл for) и как да ги използваме с масиви и колекции.
C # предоставя лесна за използване и по-четлива алтернатива на цикъл for, цикъл foreach при работа с масиви и колекции за итерация през елементите от масиви / колекции. Цикълът foreach преминава през всеки елемент, поради което се нарича foreach loop.
Преди да продължите напред с foreach loop, посетете:
- C # за цикъл
- C # масиви
- C # колекции
Синтаксис на foreach loop
foreach (елемент в iterable-item) (// тяло на цикъл foreach)
Тук iterable-item може да бъде масив или клас на колекция.
Как работи foreach loop?
В in
ключова дума се използва заедно с foreach цикъл се използва за обхождане на iterable-елемента. Ключовата дума in избира елемент от итерируемия елемент на всяка итерация и го съхранява в променливия елемент.
При първа итерация първият елемент от итерируем елемент се съхранява в елемент. При втора итерация се избира вторият елемент и т.н.
Броят пъти, в които цикълът foreach ще изпълни, е равен на броя на елементите в масива или колекцията.
Ето пример за итерация през масив с помощта на цикъла for:
Пример 1: Печат на масив с помощта на цикъл for
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( char() myArray = ('H','e','l','l','o'); for(int i = 0; i < myArray.Length; i++) ( Console.WriteLine(myArray(i)); ) ) ) )
Същата задача може да се направи с помощта на foreach loop.
Пример 2: Печат на масив с помощта на foreach loop
using System; namespace Loop ( class ForEachLoop ( public static void Main(string() args) ( char() myArray = ('H','e','l','l','o'); foreach(char ch in myArray) ( Console.WriteLine(ch); ) ) ) )
Когато стартираме и двете програми, изходът ще бъде:
Здравейте
В горната програма цикълът foreach се итерира върху масива myArray. При първата итерация първият елемент, т.е. myArray (0), се избира и съхранява в гл.
По същия начин при последната итерация се избира последният елемент, т.е. myArray (4). Вътре в тялото на цикъла се отпечатва стойността на ch.
Когато разгледаме и двете програми, програмата, която използва foreach loop, е по-четлива и лесна за разбиране. Това се дължи на неговия прост и изразителен синтаксис.
Следователно, foreach цикълът се предпочита пред for цикъл при работа с масиви и колекции.
Пример 3: Преминаване на масив от пол, използвайки цикъл foreach
Тази програма изчислява броя на кандидатите от мъжки и женски пол.
using System; namespace Loop ( class ForEachLoop ( public static void Main(string() args) ( char() gender = ('m','f','m','m','m','f','f','m','m','f'); int male = 0, female = 0; foreach (char g in gender) ( if (g == 'm') male++; else if (g =='f') female++; ) Console.WriteLine("Number of male = (0)", male); Console.WriteLine("Number of female = (0)", female); ) ) )
Когато стартираме програмата, изходът ще бъде:
Брой мъже = 6 Брой жени = 4
Пример 4: foreach цикъл със списък (колекция)
Тази програма изчислява сумата от елементи в списък.
using System; using System.Collections.Generic; namespace Loop ( class ForEachLoop ( public static void Main(string() args) ( var numbers = new List() (5,-8,3,14,9,17,0,4); int sum = 0; foreach(int number in numbers) ( sum += number; ) Console.WriteLine("Sum = (0)", sum); ) ) )
Когато стартираме програмата, изходът ще бъде:
Сума = 44
В тази програма foreach цикъл се използва за преминаване през колекция. Обхождането на колекция е подобно на обхождането през масив.
Първият елемент на колекцията се избира при първата итерация, вторият елемент при втората итерация и така до последния елемент.