Я прохожу через коллекцию, используя шаблон типа посетителя, и мне нужно получить доступ к текущему и следующему элементу в списке. На данный момент я делаю это с помощью метода расширения, подобного этому
public void Visit<TItem>(this IEnumerable<TItem> theList, Action<TItem, TItem> visitor)
{
for (i = 0; i <= theList.Count - 1; i++) {
if (i == theList.Count - 1) {
visitor(theList(i), null);
} else {
visitor(theList(i), theList(i + 1));
}
}
}
. Мне было интересно, есть ли другие / лучшие / более элегантные способы достижения этого? На данный момент я думаю, что мне нужен только доступ к текущему и следующему элементам в списке, но мне интересно, могу ли я столкнуться с ситуациями, когда мне может потребоваться, например, просмотреть следующие n элементов вперед.