Is there some rare language construct I haven\'t encountered (like the few I\'ve learned recently, some on Stack Overflow) in C# to get a value representing the current iter
Why foreach ?!
The simplest way is using for instead of foreach if you are using List:
for (int i = 0 ; i < myList.Count ; i++) { // Do something... }
Or if you want use foreach:
foreach (string m in myList) { // Do something... }
You can use this to know the index of each loop:
myList.indexOf(m)