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