Всем хороша конструкция foreach (.net).
Но часто надо при пробегании по коллекции обращатся к индексу объекта в коллекции.
Поэтому приходится вводить индексную переменную и инкрементировать ее:
int i = 0;
foreach (object o in collection)
{
//any
i++;
}
Собственно предлагаю нововведение: в теле foreach сделать доступной пропертю Index.
Тогда код превратится
foreach (object o in collection)
{
//any with o.Index
}