Разрешение итерации без создания мусораC#

Место общения программистов C#
Anonymous
Разрешение итерации без создания мусора

Сообщение Anonymous »

У меня есть следующий код в пуле объектов, реализующий интерфейс 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, должны быть перебраны. Порядок не имеет значения.

Подробнее здесь: https://stackoverflow.com/questions/548 ... ny-garbage

Вернуться в «C#»