C# foreach Döngüsü

C# dilinde foreach döngüsü, koleksiyonlar ve diziler üzerinde kolayca yineleme yapmak için kullanılır. Diğer döngülerden farklı olarak, bir koleksiyondaki elemanları tek tek gezmek için özel olarak tasarlanmıştır. foreach döngüsü, özellikle eleman sayısını bilmediğiniz koleksiyonlarda güvenli ve okunabilir bir çözüm sunar.


1. foreach Döngüsünün Sözdizimi

foreach (var item in koleksiyon)
{
    // Kod bloğu
}
  • item: Döngü sırasında koleksiyondan alınan her bir elemanı temsil eder.
  • koleksiyon: Üzerinde yineleme yapılacak koleksiyon veya dizi.
  • Kod bloğu: Döngü her çalıştığında yapılacak işlemleri tanımlar.

2. foreach Döngüsünün Özellikleri

  • Koleksiyonun her bir elemanını sırayla işler.
  • Eleman sayısını manuel olarak takip etmeye gerek yoktur.
  • Diziler (array), List, Dictionary, Set gibi tüm koleksiyonlarla uyumludur.
  • Koleksiyondaki her elemanı yalnızca okunabilir şekilde işler; doğrudan eleman değiştirmek mümkün değildir.

3. Basit Bir foreach Döngüsü Örneği

Örnek:

string[] meyveler = { "Elma", "Armut", "Muz", "Çilek" };

foreach (string meyve in meyveler)
{
    Console.WriteLine($"Meyve: {meyve}");
}

Çıktı:

Meyve: Elma
Meyve: Armut
Meyve: Muz
Meyve: Çilek

Bu örnekte:

  • meyve değişkeni, her döngüde meyveler dizisindeki bir elemanı temsil eder.
  • Koleksiyonun tüm elemanları sırasıyla yazdırılır.

4. foreach ile Listelerde İterasyon

List koleksiyonlarında foreach döngüsü kullanımı oldukça yaygındır.

Örnek:

List<int> sayilar = new List<int> { 10, 20, 30, 40 };

foreach (int sayi in sayilar)
{
    Console.WriteLine($"Sayı: {sayi}");
}

Çıktı:

Sayı: 10
Sayı: 20
Sayı: 30
Sayı: 40

5. foreach ile Dictionary Kullanımı

Dictionary koleksiyonlarında anahtar ve değer çiftleri üzerinde yineleme yapılabilir.

Örnek:

Dictionary<string, int> yaslar = new Dictionary<string, int>
{
    { "Ahmet", 25 },
    { "Ayşe", 30 },
    { "Mehmet", 35 }
};

foreach (KeyValuePair<string, int> kisi in yaslar)
{
    Console.WriteLine($"Ad: {kisi.Key}, Yaş: {kisi.Value}");
}

Çıktı:

Ad: Ahmet, Yaş: 25
Ad: Ayşe, Yaş: 30
Ad: Mehmet, Yaş: 35

6. foreach ve Dizi İndisleri

foreach döngüsünde elemanlara doğrudan erişim mümkün olsa da indis (index) gerekirse for döngüsü tercih edilmelidir.

Eğer indis bilgisine ihtiyaç varsa şu şekilde bir çözüm uygulanabilir:

Örnek:

string[] meyveler = { "Elma", "Armut", "Muz" };
int index = 0;

foreach (string meyve in meyveler)
{
    Console.WriteLine($"Index: {index}, Meyve: {meyve}");
    index++;
}

Çıktı:

Index: 0, Meyve: Elma
Index: 1, Meyve: Armut
Index: 2, Meyve: Muz

7. foreach ve Değer Değiştirme Kısıtlaması

foreach döngüsü, koleksiyondaki elemanları yalnızca okuma için uygundur. Koleksiyon elemanlarını değiştirmek isterseniz, for döngüsü kullanılmalıdır.

Yanlış Örnek:

int[] sayilar = { 1, 2, 3 };

foreach (int sayi in sayilar)
{
    // sayi *= 2;  // Hata verir: Eleman değiştirilemez
}

Doğru Çözüm:

int[] sayilar = { 1, 2, 3 };

for (int i = 0; i < sayilar.Length; i++)
{
    sayilar[i] *= 2;  // Eleman değiştirilebilir
}

8. foreach ile Kompleks Veri Türleri

Bir sınıf listesi üzerinde yineleme yapılabilir.

Örnek:

class Ogrenci
{
    public string Ad { get; set; }
    public int Yas { get; set; }
}

List<Ogrenci> ogrenciler = new List<Ogrenci>
{
    new Ogrenci { Ad = "Ali", Yas = 20 },
    new Ogrenci { Ad = "Ayşe", Yas = 22 },
    new Ogrenci { Ad = "Mehmet", Yas = 19 }
};

foreach (Ogrenci ogrenci in ogrenciler)
{
    Console.WriteLine($"Ad: {ogrenci.Ad}, Yaş: {ogrenci.Yas}");
}

Çıktı:

Ad: Ali, Yaş: 20
Ad: Ayşe, Yaş: 22
Ad: Mehmet, Yaş: 19

9. Sonsuz Döngü Riski Yoktur

Diğer döngülerde olduğu gibi koşul belirlemenize gerek kalmadığından, foreach döngüsüyle sonsuz döngü riski bulunmaz. Koleksiyon bittiğinde döngü otomatik olarak durur.


Sonuç

C# dilinde foreach döngüsü, özellikle koleksiyonlar ve diziler üzerinde iterasyon yapmak için en uygun ve pratik araçlardan biridir. Elemanları sırasıyla işlemek gerektiğinde okunabilirliği artırır ve hata yapma olasılığını azaltır. Ancak elemanlara yazma veya değiştirme işlemleri gerekiyorsa, diğer döngü türleri tercih edilmelidir.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir