Я знаю основы того, как петли foreach работают на С# (Как работают циклы foreach на С#)
Мне интересно, использует ли foreach память, которая может вызывать сборку мусора? (для всех встроенных системных типов).
Например, используя Reflector в классе System.Collections.Generic.List<T>
, вот реализация GetEnumerator:
public Enumerator<T> GetEnumerator()
{
return new Enumerator<T>((List<T>) this);
}
При каждом использовании это выделяет новый Enumerator (и больше мусора).
Все ли это делают? Если да, то почему? (нельзя ли повторить использование одного Enumerator?)