Разрешение итерации без создания мусора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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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