Вы делаете свой цикл как обычно, но элемент, на котором вы сейчас находитесь, становится next
, предыдущий элемент - current
, а элемент перед ним - prev
.
object prev = null;
object current = null;
bool first = true;
foreach (var next in tokens)
{
if (!first)
{
Console.WriteLine("Processing {0}. Prev = {1}. Next = {2}", current, prev, next);
}
prev = current;
current = next;
first = false;
}
// Process the final item (if there is one)
if (!first)
{
Console.WriteLine("Processing {0}. Prev = {1}. Next = {2}", current, prev, null);
}
Если вы используете C # 7.0+, вы можете написать
(prev, current, first) = (current, next, false);
вместо трех отдельных операторов в конце цикла.