Foreach를 index와 함께 사용하기

아래 THOMAS LEVESQUE님의 아티클 중의 하나입니다.
저만 그런게 아니군요. 간혹, for문을 쓰자니 코드의 견고함이 깨지는 것 같고,
foreach문을 쓰자니 index를 간혹 써야 할 때가 있는데, 그럴 때마다 잠깐의 갈등이 생깁니다.
대부분 아래 글 처럼

// foreach with a "manual" index
int index = 0;
foreach (var item in collection)
{
    DoSomething(item, index);
    index++;
}

형태로 해소하곤 했지만, 코드가 아름답다 생각은 안했는데, 아래와 같은 방법이 가능하군요.
물론, 성능상의 약간의 손해는 감수해야 합니다;

아 이런방법이 있었군요…사실 저도 인덱스 하는 식으로 하긴했는데…이걸 보니 부끄러워 지네요 ㅠㅠ

사실 foreach의 불편한점이 명확한게 source collection이 상당히 많을 경우…인덱스가 프로그래스 기능을 해주니까 그렇게라도 했던건데 앞으로 코드를 짧게하기 위해 요렇게 해야겠네요 ㅎㅎ

꿀팁 감사합니다!