6.3 Auf einem generischen Typ einen Iterator implementieren

Problem

Sie möchten, dass die Elemente, die in Ihrem generischen Typ enthalten sind, über die foreach-Anweisung durchlaufen werden können.

Lösung

Fügen Sie Ihrem generischen Typ einen Iterator hinzu, wie Sie es hier sehen:

public class ShoppingList<T>
{
    public ShoppingList(  ) {}

    private List<T> _items = new List<T>(  );

    public void AddItem(T item)
    {
        _items.Add(item);
    }

    // Iterator
    public IEnumerator<T> GetEnumerator(  )
    {
        for (int index = 0; index < _items.Count; index++)
        {
            yield return (_items[index]);
        }
    }
}

Der folgende Code erzeugt ein neues ShoppingList<T>-Objekt und füllt es mit Strings. Dann verwendet er eine foreach-Schleife, um alle Strings zu enumerieren und anzuzeigen:

public static ...

Get C# Kochbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.