Back to questions
Junior — Middle
72
Можете объяснить, что представляет собой паттерн проектирования итератор и как он применяется?
Companies where asked
Sector Tree
Answer from AI
sobes.tech AI
Паттерн проектирования Итератор (Iterator) предназначен для последовательного обхода элементов коллекции без раскрытия её внутренней структуры.
Основная идея:
- Итератор предоставляет интерфейс для доступа к элементам коллекции по одному.
- Позволяет клиентскому коду перебирать элементы, не зная, как именно коллекция устроена внутри.
В C# итератор реализуется с помощью интерфейса IEnumerator и IEnumerable. Обычно для удобства используется ключевое слово yield, которое упрощает создание итераторов.
Пример итератора в C#:
using System;
using System.Collections;
using System.Collections.Generic;
class MyCollection : IEnumerable<int>
{
private int[] data = {1, 2, 3, 4, 5};
public IEnumerator<int> GetEnumerator()
{
foreach (var item in data)
{
yield return item; // возвращаем элементы по одному
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
class Program
{
static void Main()
{
var collection = new MyCollection();
foreach (var item in collection)
{
Console.WriteLine(item);
}
}
}
Здесь MyCollection реализует IEnumerable<int>, позволяя использовать foreach для перебора элементов. Итератор скрывает детали хранения данных и предоставляет простой способ обхода.