Bu makalede foreach döngülerini (for döngüsüne alternatif) ve bunların diziler ve koleksiyonlarla nasıl kullanılacağını öğreneceğiz.
C #, diziler / koleksiyonların öğeleri arasında yineleme yapmak için diziler ve koleksiyonlarla çalışırken foreach döngüsü olan for döngüsü için kullanımı kolay ve daha okunabilir bir alternatif sağlar. Foreach döngüsü her öğe boyunca yinelenir, dolayısıyla foreach döngüsü olarak adlandırılır.
Foreach döngüsüne başlamadan önce şunlara bakmanızda fayda var:
- C# for döngüsü
- C# dizileri
- C# koleksiyonlar
Foreach döngüsü syntaxı
foreach (tip değişken in koleksiyon)
{
//foreach döngüsü kod bloğu
}
Burada koleksiyon bir dizi veya bir koleksiyon sınıfı olabilir.
Foreach döngüsü nasıl çalışır?

Foreach döngüsü ile birlikte kullanılan in
anahtar sözcüğü, koleksiyon
üzerinde yineleme yapmak için kullanılır. İn anahtar sözcüğü, her yinelemede koleksiyondan
bir öğe seçer ve onu değişken öğede depolar.
İlk yinelemede, koleksiyon öğesinin ilk nesnesi öğede tutulur. ikinci yinelemede, ikinci öğe seçilir ve bu böyle devam eder.
Dizi veya koleksiyonun son öğesinin sayısına eşit olduğunda foreach döngüsünden çıkılır.
Buradaki örnekte for döngüsü kullanılarak bir dizi boyunca yinelemeyi görüyoruz:
Örnek 1: for Döngüsü İle Verilen Diziyi Ekrana Yazdırma
using System;
namespace Donguler
{
class ForDongusu
{
public static void Main(string[] args)
{
char[] dizi= {'D','O','Ğ','R','U','K','O','D'};
for(int i = 0; i < dizi.Length; i++)
{
Console.WriteLine(dizi[i]);
}
}
}
}
Aynı görev foreach döngüsü kullanarak da yapılabilir.
Örnek 2: foreach Döngüsü İle Verilen Diziyi Ekrana Yazdırma
using System;
namespace Donguler
{
class ForEachDongusu
{
public static void Main(string[] args)
{
char[] dizi= {'D','O','Ğ','R','U','K','O','D'};
for(char ch in dizi)
{
Console.WriteLine(dizi[ch]);
}
}
}
}
Programı çalıştırdığımızda çıktı şu şekilde olacaktır:
D
O
G
R
U
K
O
D
Yukarıdaki programda, foreach döngüsü dizi
dizisi üzerinde yinelenir. İlk yinelemede, ilk öğe, yani dizi[0]
seçilir ve ch
içinde saklanır.
Benzer şekilde son yinelemede, son öğe, yani dizi [4]
seçilir. Döngünün gövdesinin içinde ch
değeri yazdırılır.
Her iki programa da baktığımızda, foreach döngüsünü kullanan program daha okunabilir ve anlaşılması kolaydır. Bunun nedeni basit ve etkileyici syntaxdır.
Bu nedenle, diziler ve koleksiyonlarla çalışırken foreach döngüsü for döngüsü yerine tercih edilir.
Örnek 3: Foreach Döngüsünü Kullanarak Bir Cinsiyet Dizisini Çıktı Almak
Bu program erkek ve kadın aday sayısını hesaplar.
using System;
namespace Donguler
{
class ForEachDongusu
{
public static void Main(string[] args)
{
char[] cinsiyet = {'e','k','e','e','e','k','k','e','e','k'};
int erkek = 0, kadin = 0;
foreach (char c in cinsiyet)
{
if (c == 'e')
erkek++;
else if (c =='k')
kadin++;
}
Console.WriteLine("Erkeklerin sayısı = {0}", erkek);
Console.WriteLine("Kadınların sayısı = {0}", kadin);
}
}
}
Programı çalıştırdığımızda şöyle bir çıktı ile karşılaşacağız:
Erkeklerin sayısı = 6
Kadınların sayısı = 4
Örnek 4: Liste(Koleksiyon) ile foreach Döngüsü
Bu program listedeki sayıları toplar.
using System;
using System.Collections.Generic;
namespace Donguler
{
class ForEachDongusu
{
public static void Main(string[] args)
{
var sayilar = new List() {5,-8,3,14,9,17,0,4};
int toplam = 0;
foreach(int sayi in sayilar)
{
toplam += sayi;
}
Console.WriteLine("Toplam = {0}", toplam);
}
}
}
Programı çalıştırdığımızda çıktı şu şekilde olacaktır:
Toplam = 44
Bu programda foreach döngüsü bir koleksiyonda gezinmek için kullanılır. Bir koleksiyonda gezinmek, bir dizide gezinmeye benzer.
Koleksiyonun ilk öğesi, ilk yinelemede, ikinci öğe ikinci yinelemede ve son öğeye kadar seçilir.