Есть ли какая-то редкая языковая конструкция, с которой я не сталкивался (например, немногие, которые я недавно выучил, некоторые по переполнению стека) в C # для получения значения, представляющего текущую итерацию цикла foreach?
Например, в настоящее время я делаю что-то вроде этого в зависимости от обстоятельств:
int i = 0;
foreach (Object o in collection)
{
// ...
i++;
}
foreach
состоит в том, чтобы предоставить общий итерационный механизм для всех коллекций независимо от того, являются ли они indexable ( List
) или нет ( Dictionary
).
Dictionary
он и не индексируется, итерация Dictionary
выполняет его в определенном порядке (т. Е. Перечислитель индексируется благодаря тому, что он последовательно выдает элементы). В этом смысле мы могли бы сказать, что мы ищем не индекс в коллекции, а скорее индекс текущего перечисляемого элемента в перечислении (т.е. находимся ли мы в первом, пятом или последнем перечисляемом элементе).