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üdemeyveler
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.