Всего один раз. Это примерно эквивалентно:
using (IEnumerator<Foo> iterator = myDict.Values.GetEnumerator())
{
while (iterator.MoveNext())
{
object obj = iterator.Current;
// Body
}
}
См. Раздел 8.8.4 спецификации C # 4 для получения дополнительной информации. В частности, подробности о предполагаемом типе элемента итерации, об использовании и о том, как компилятор C # обрабатывает циклы foreach
над типами, которые не реализуют IEnumerable
или IEnumerable<T>
.