List.Enumerator не продвигается при вызове MovenextC#

Место общения программистов C#
Ответить
Anonymous
 List.Enumerator не продвигается при вызове Movenext

Сообщение Anonymous »

Рассматривая следующий код: < /p>

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
public static void Main()
{
var enumerator = new MyEnumerator();
int i = 1;
do
{
Console.WriteLine($"Expected: {i} - Actual: {enumerator.Current}");
i++;
if(i > 5)
{
break;
}
}
while(enumerator.MoveNext());
}

private class MyEnumerator
{
private readonly List.Enumerator _enumerator;

public MyEnumerator()
{
_enumerator = Enumerable.Range(1,5).ToList().GetEnumerator();
_enumerator.MoveNext();
}

public int Current => _enumerator.Current;

public bool MoveNext() => _enumerator.MoveNext();
}
}
< /code>
Вот результат: < /p>
Expected: 1 - Actual: 1
Expected: 2 - Actual: 1
Expected: 3 - Actual: 1
Expected: 4 - Actual: 1
Expected: 5 - Actual: 1
Так что первый вызов movenext () (в конструкторе) продвигает перечисление. Но следующие вызовы нет.
может кто -нибудь объяснить мне это? Но я не вижу, где копия ...

Подробнее здесь: https://stackoverflow.com/questions/797 ... -is-called
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»