public void Remove(T item) { if (item == null) { return; } var index = _dataList.IndexOf(item); if (index < 0) { return; } lock (_dataList) { _dataList[index] = null; _freeIndex.Add(index); _storageQueue.Remove(item); } }