纯C#,泛型,可扩容
ps:一定要仔细阅读源码,不然你会提问:为什么Resize里面的循环新增时,count作为index而不是size?
using System;
namespace UnityFramework
{
public sealed class ObjectPool<T>
where T : new()
{
private int growSize = 20;
private T[] pool;
private int nextIndex = 0;
public ObjectPool(int size)
{
Resize(size, false);
}
public ObjectPool(int size, int growSize)
{
this.growSize = growSize;
Resize(size, false);
}
public int Length
{
get { return pool.Length; }
}
public int Available
{
get { return pool.Length - nextIndex; }
}
public int Allocated
{
get { return nextIndex; }
}
public T Allocate()
{
T t = default(T);