IEnumerable interface, C# programlama dilinde kullandığımız birçok koleksiyonun temel interface'i olduğu için anlaşılması önem taşıyan konulardan birisidir. Temel görevi ise, bir koleksiyonda yer alan elemanları yinelemektir (iteration). Bir koleksiyon sınıfına IEnumerable interface'i implement edildiğinde içerisindeki her bir eleman sayılabilir duruma gelir.
IEnumerable interface'inin iki versiyonu bulunmaktadır.
1. Generic sınıflar için IEnumerable <T>
2. Generic olmayan sınıflar için IEnumerable
Not: Generic olmayan sınıflar için IEnumerable kullanımında boxing/unboxing işlemleri verimliliği düşüreceği için yeni oluşturacağınız projelerinizde generic sınıflar için olan IEnumerable <T> interface'ini kullanmanızı tavsiye ederim.
Not 2: Koleksiyonlarda foreach döngüsünü (bkz: C# ile foreach döngüsü kullanımı ve örnekleri) kullanabilmemizi sağlayan implementation da IEnumerable implementation'udur.
C# IEnumerable Interface Örneği:
Araba.cs
class Araba
{
public int MotorGucu { get; set; }
public string Marka { get; set; }
public Araba (int MotorGucu, string Marka)
{
this.MotorGucu = MotorGucu;
this.Marka = Marka;
}
}
OtoGaleri.cs
using System.Collections;
using System.Collections.Generic;
class OtoGaleri: IEnumerable<Araba>
{
List<Araba> Arabalar;
public OtoGaleri()
{
Arabalar = new List<Araba>() {
new Araba (2000, "BMW 3.20"),
new Araba (1400, "VolksWagen Jetta")};
}
IEnumerator<Araba> IEnumerable<Araba>.GetEnumerator()
{
return Arabalar.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new System.NotImplementedException();
}
}
Program.cs
class Program
{
static void Main(string[] args)
{
OtoGaleri otogaleri = new OtoGaleri();
foreach (Araba araba in otogaleri)
{
System.Console.WriteLine(araba.MotorGucu + "-" + araba.Marka);
}
}
}
Çıktı:
2000-BMW 3.20
1400-VolksWagen Jetta
Önceki bazı diğer benzer içerikli yazım için;
bkz: C# ve Generic ile Non-Generic Koleksiyonlar Nelerdir?
bkz: Interface Nedir?
bkz: C# Programlama Dilinde Koleksiyon Nedir?
bkz: C# ile params anahtar sözcüğü kullanımı ve örnekleri
bkz: C# Hashtable Kullanımı ve Örnekleri
bkz: C# Dictionary Nedir? Kullanımı ve Örnekleri