Я согласен, что Resharper - хороший инструмент, но я хотел бы добавить, что я думаю, что это демонстрирует причину НЕ использовать эту конструкцию.
Альтернативой может быть:
РЕДАКТИРОВАТЬ:
//.net 4.0
var firstNode = listNodes.First();
//do something special for first.
foreach(var node in listNodes.Skip(1))
{
//do something for the rest.
}
//.net 2.0
using (IEnumerator<RdAbstractNode> enumerator = listNodes.GetEnumerator();)
{
if (!enumerator.MoveNext())
return;
RdAbstractNode first = enumerator.Current;
//do something with first
while(enumerator.MoveNext())
{
RdAbstractNode currentNode = enumerator.Current;
//do something with the node.
}
}
Мы часто нуждаемся в какой-то специальной обработке для первого элементаИногда лучше изменить логику и сделать всю обработку единообразной.Если мы не можем, то я всегда предпочитаю четко отделять обработку специального случая от остальных элементов, а не вкладывать ее.