Sobes.tech
Junior — Middle

Milyen módszerek valósítják meg az IEnumerable interfészt a programozási nyelvben?

sobes.tech MI

Válasz az MI-től

A C# nyelvben az IEnumerable interfész implementálva van azok által a osztályok és struktúrák által, amelyek biztosítják a GetEnumerator() metódust, amely egy olyan objektumot ad vissza, amely az IEnumerator interfészt valósítja meg. Ez lehetővé teszi a gyűjtemény bejárását a foreach ciklus segítségével.

Az IEnumerable megvalósításának fő módjai:

  1. Kézi megvalósítás:
public class MyCollection : IEnumerable
{
    private object[] items = {1, 2, 3};

    public IEnumerator GetEnumerator()
    {
        for (int i = 0; i < items.Length; i++)
            yield return items[i];
    }
}
  1. A generikus IEnumerable<T> interfész megvalósítása:
public class MyCollection<T> : IEnumerable<T>
{
    private T[] items;

    public MyCollection(T[] items) { this.items = items; }

    public IEnumerator<T> GetEnumerator()
    {
        for (int i = 0; i < items.Length; i++)
            yield return items[i];
    }

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
  1. A standard könyvtár gyűjteményeinek használata, amelyek már implementálják az IEnumerable-t (pl. List<T>, Array).

A lényeges pont az, hogy biztosítsuk a GetEnumerator() metódust, amely egy enumerátort ad vissza a gyűjtemény elemein való végighaladásra.