CodeBlanks Logo Icon CodeBlanks

IEnumerable<T>

C# kursu · Orta seviye · Ders 82/116

IEnumerable<T> ile yinelenebilir koleksiyon sözleşmesini öğrenirsin.

IEnumerable<T> sözleşmesi

IEnumerable<T>, üzerinde foreach ile gezinilebilen her dizinin sözleşmesidir. Tek bir üye gerektirir: GetEnumerator() yöntemi. Bu yöntem bir IEnumerator<T> döndürür.

List<T>, T[] ve Queue<T> hepsi IEnumerable<T> uygulayan türlerdir. Bir metot IEnumerable<int> alıyorsa tüm bu türleri kabul eder. Bu, koleksiyonlar arasında geçiş yapmayı kolaylaştırır.

GetEnumerator ve foreach

foreach (var x in seq) yazdığında derleyici arka planda seq.GetEnumerator() çağırır. Döngü her adımda MoveNext() çağırır ve Current özelliğini okur. MoveNext false döndüğünde döngü durur.

Yani foreach, IEnumerator üyelerinin özellikle çağrılmasının kısayoludur. IEnumerable<T> uygulayan bir sınıf yazarsan foreach otomatik olarak çalışır, ek kod gerekmez.

Uygulama IEnumerable<int> metodu yaz

Bir PrintAll(IEnumerable<int> items) metodu yaz: foreach ile her elemanı Console.WriteLine ile yazdırsın. Main içinde PrintAll(list) çağrısı ekle.

Örnek çözümü göster
PrintAll içinde foreach ile items'ı gez, her item'ı WriteLine ile yazdır. Main'e PrintAll(list); ekle.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Program
{
    static void PrintAll(IEnumerable<int> items)
    {
        foreach (var item in items)
        {
            Console.WriteLine(item);
        }
    }

    static void Main()
    {
        var list = new List<int> { 1, 2, 3 };
        PrintAll(list);
    }
}

Kendini test et

  1. IEnumerable<T> ne sağlar?

    • foreach ile gezilebilirlik
    • İndeksli erişim
    • Thread güvenliği
    • Otomatik sıralama
    Cevabı göster

    foreach ile gezilebilirlik — Doğru. IEnumerable<T> uygulayan türler foreach ile gezilir.

  2. Arayüzü uygula

    class Bag : IEnumerable<____>
    Cevabı göster
    class Bag : IEnumerable<int>
  3. Üyeyi açıklamaya eşle

    GetEnumerator
    İteratör verir
    MoveNext
    Sonrakine geçer
    Current
    Şimdiki eleman
    Reset
    Başa döner

Orta seviye bölümündeki tüm dersler