C# можно ли к классу обратиться как к коллекции?

Есть задание: Написать пример класса для использования его в цикле foreach(var i in MyClass).

Но это получается, мы буквально обращаемся к классу как какому-то массиву. Кто знает как это сделать?


Ответы (1 шт):

Автор решения: aepot

Ну например реализовать IEnumerable<T>

public class MyClass : IEnumerable<int>
{
    public IEnumerator<int> GetEnumerator()
    {
        for (int i = 1; i < 100; i *= 2)
            yield return i;
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

Работает вот так

static void Main(string[] args)
{
    var items = new MyClass();
    foreach (int i in items)
    {
        Console.WriteLine(i);
    }
}

Вывод в консоль

1
2
4
8
16
32
64
→ Ссылка