Это IEnumerable.GetEnumerator()
(или IEnumerable<T>.GetEnumerator()
), а не IEnumerator.GetEnumerator()
.Членами IEnumerator
являются MoveNext()
, Current
и Reset()
(и Dispose
для универсальной версии).IEnumerable
- это «нечто, что может быть повторено» (например, список), а IEnumerator
представляет текущее состояние в этой итерации - как курсор базы данных.
Немного странно, что ваш класс не '• реализовать IEnumerable
или IEnumerable<T>
.Я бы ожидал что-то вроде этого:
class NodeFull : IEnumerable<int>
{
... other stuff as normal ...
public IEnumerator<int> GetEnumerator()
{
return children.GetEnumerator();
}
// Use explicit interface implementation as there's a naming
// clash. This is a standard pattern for implementing IEnumerable<T>.
IEnumerator IEnumerable.GetEnumerator()
{
// Defer to generic version
return GetEnumerator();
}
}