Often I have to code a loop that needs a special case for the first item, the code never seems as clear as it should ideally be.
Short of a redesign of the C# language,
I'd be tempted to use a bit of linq
using System.Linq; var theCollectionImWorkingOn = ... var firstItem = theCollectionImWorkingOn.First(); firstItem.DoSomeWork(); foreach(var item in theCollectionImWorkingOn.Skip(1)) { item.DoSomeOtherWork(); }