Sobes.tech
Back to questions
Junior — Middle
69

Какие способы реализуют интерфейс IEnumerable в языке программирования?

Answer from AI

sobes.tech AI

В языке C# интерфейс IEnumerable реализуется классами и структурами, которые предоставляют метод GetEnumerator(), возвращающий объект, реализующий интерфейс IEnumerator. Это позволяет перебирать коллекцию с помощью цикла foreach.

Основные способы реализации IEnumerable:

  1. Реализация вручную:
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. Реализация обобщенного интерфейса IEnumerable<T>:
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. Использование коллекций из стандартной библиотеки, которые уже реализуют IEnumerable (например, List<T>, Array).

Таким образом, ключевой момент — предоставить метод GetEnumerator(), который возвращает перечислитель для обхода элементов коллекции.