Интерфейс IEnumerator в C#
Интерфейс IEnumerator<T> описывает пошаговый обход:
MoveNext переводит на следующий элемент, а
Current возвращает значение на текущей позиции.
Перечислитель берут у коллекции методом GetEnumerator и двигают циклом while. Каждый успешный MoveNext делает текущим следующий элемент, а Current отдаёт его. У списка из двух строк тело цикла выполнится дважды. Когда элементы кончились, MoveNext возвращает false и исключения нет. Вызов Dispose через using нужен перечислителям, которые держат внешний ресурс:
using System.Collections.Generic;
var data = new List<string> { "one", "two" };
using IEnumerator<string> en = data.GetEnumerator();
while (en.MoveNext())
{
Console.WriteLine(en.Current); // выведет "one", "two"
}
Посчитайте сумму чисел 4, 5 и 6, читая их через перечислитель списка, и выведите сумму.