Permitindo iteração sem gerar lixo
Tenho o seguinte código em um pool de objetos que implementa a interface IEnumerabl
public IEnumerable<T> ActiveNodes
{
get
{
for (int i = 0; i < _pool.Count; i++)
{
if (_pool[i].AvailableInPool)
{
yield return _pool[i];
}
}
}
}
Tanto quanto eu sei (de acordo comist question), isso gerará lixo, pois o objeto IEnumerable precisará ser coletado. Nenhum dos elementos em _pool será coletado, pois o objetivo do pool é manter referências a todos eles para impedir a criação de lix
Alguém pode sugerir uma maneira de permitir a iteração sobre _pool para que nenhum lixo seja gerad
Ao iterar sobre o pool, todos os itens no pool que possuemAvailableInPool == true
deve ser repetido. A ordem não importa.