C# Индекс итерации цикла foreache

Есть ли какая-то особая конструкция для цикла foreache позволяющая получить индекс итерации цикла foreache? Или необходимо для этого создавать отдельную переменную, например:

int index = 0;
foreach(var item in collection)
{
   // ...
   index++
}

При использовании цикла foreach не принято использовать индекс итерации, для этого есть цикл for. А если вам сильно нужно использовать цикл foreach и заменить его циклом for у вас не получается, тогда да это единственный способ получения индекса итерации.