Разница между интерфейсом IEnumerable и его обобщённой версией IEnumerator заключается в следующем:
- IEnumerable представляет коллекцию элементов, которую можно перебирать. 6 Он не содержит других методов или свойств, кроме одного метода GetEnumerator, который возвращает объект IEnumerator. 6
- IEnumerator определяет функционал для перебора внутренних объектов в контейнере. 1 Он имеет методы MoveNext() для перемещения на одну позицию вперёд в контейнере элементов, свойство Current для получения текущего элемента в контейнере и метод Reset() для перемещения в начало контейнера. 1
Таким образом, реализация интерфейса IEnumerator предоставляет доступ к отдельным элементам коллекции, а реализация IEnumerable — к объекту класса, реализующего IEnumerator. 4