C# dilindeki foreach
döngüsü, koleksiyonlar üzerinde yineleme yapmak için kullanışlı bir yoldur, ancak mevcut yinelemenin indeksini yerleşik olarak sağlamaz. Bu, hem öğeye hem de indeksine ihtiyacınız olduğunda sakıncalı olabilir. Bu makale, foreach
benzeri yineleme içinde indeksi almak için iki etkili yöntemi ele almaktadır.
İçerik Tablosu
LINQ’un Select()
Yöntemini Kullanma
LINQ’un Select()
yöntemi, hem öğeyi hem de indeksini elde etmenin özlü bir yolunu sunar. Orijinal koleksiyonu, her öğenin indeksiyle eşleştirildiği yeni bir diziye dönüştürür.
using System;
using System.Collections.Generic;
using System.Linq;
public class ForeachIndexExample
{
public static void Main(string[] args)
{
List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David" };
// İndeksi ve öğeyi almak için Select() kullanın
var indexedNames = names.Select((name, index) => new { Name = name, Index = index });
// İndeksli dizi üzerinde yineleyin
foreach (var item in indexedNames)
{
Console.WriteLine($"Ad: {item.Name}, İndeks: {item.Index}");
}
}
}
Bu kod, hem adı hem de indeksini içeren yeni bir anonim tür oluşturur. foreach
döngüsü daha sonra bu yeni dizi üzerinde yineleyerek her iki bilgiye de erişim sağlar. Bu yaklaşım okunabilirdir ve her boyuttaki koleksiyonlar için iyi çalışır.
Standart for
Döngüsünü Kullanma
Özellikle büyük koleksiyonlarda performansı iyileştirmek için standart bir for
döngüsü daha doğrudan bir yaklaşım sunar. Bu, yeni bir dizi oluşturmanın ek yükünden kaçınır.
using System;
using System.Collections.Generic;
public class ForeachIndexExample
{
public static void Main(string[] args)
{
List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David" };
// İndeksli bir for döngüsü kullanın
for (int index = 0; index < names.Count; index++)
{
string name = names[index];
Console.WriteLine($"Ad: {name}, İndeks: {index}");
}
}
}
Bu yöntem, öğelere indekslerini kullanarak doğrudan erişir. foreach
döngüsü kullanmasa da, büyük veri kümeleri için daha verimli bir çözüm sağlar.
Bu yöntemler arasından seçim, önceliklerinize bağlıdır. Select()
yöntemi okunabilirlik sunarken, for
döngüsü daha büyük koleksiyonlar için daha iyi performans sağlar. Seçiminizi yaparken veri boyutunuzu ve okunabilirliğin önemini göz önünde bulundurun.