public void ReturnItem(T returnItem) { PooledItem <T> item = poolList.Find(i => i.item.Equals(returnItem)); if (item != null) { item.isItemUsed = false; } }
public T GetItem() { if (poolList.Count > 0) { PooledItem <T> item = poolList.Find(i => i.isItemUsed == false); if (item != null) { item.isItemUsed = true; return(item.item); } } PooledItem <T> newPoolItem = new PooledItem <T>(); newPoolItem.isItemUsed = true; newPoolItem.item = CreateNewPooledItem(); poolList.Add(newPoolItem); return(newPoolItem.item); }