У меня есть следующий код в пуле объектов, который реализует интерфейс IEnumerable.
public IEnumerable<T> ActiveNodes
{
get
{
for (int i = 0; i < _pool.Count; i++)
{
if (_pool[i].AvailableInPool)
{
yield return _pool[i];
}
}
}
}
Ни один из элементов в _pool никогда не будет собран, так как целью пула является сохранение ссылок на все из них для предотвращения создания мусора.
Что-нибудь в этом коде генерирует мусор?
(Возможно, C # создает объект IEnumerable, который позже будет собран?)