Я вроде новичок в C# я знаю метод, определенный в интерфейсе должен быть реализованIEnumerator.MoveNext() реализация?
, но в коде ниже я не реализован MoveNext() метод
static void Main()
{
List<int> list = new List<int>();
list.Add(1);
list.Add(5);
list.Add(9);
List<int>.Enumerator e = list.GetEnumerator();
Write(e);
}
static void Write(IEnumerator<int> e)
{
while (e.MoveNext())
{
int value = e.Current;
Console.WriteLine(value);
}
}
Я проверил в метаданных слишком , & он не обеспечивает никакой реализации.
так почему компилятор не несет никакой ошибки? где реализуется метод MoveNext() & как он переходит к следующему значению?
Является ли код для метода MoveNext() автоматически генерируемым компилятором? пожалуйста, помогите
Вы звоните 'list.GetEnumerator()'. Это возвращает экземпляр 'IEnumerator'. Зачем вам нужно его реализовать, когда у вас есть экземпляр? :) –
Luaan
Если бы у вас был 'class myClass: IEnumerator', тогда он заставил бы вас «реализовать» следующий шаг. Но вы не объявили, что ваш класс имеет тип 'IEnumerator ', вы его потребляете. –
paqogomez