using System; using System.Collections.Generic; namespace TEngine { /// /// 静态通用对象池 /// /// public static class Pool { private static readonly Queue PoolQueue = new Queue(); public static int Count => PoolQueue.Count; public static T Rent() { return PoolQueue.Count == 0 ? Activator.CreateInstance() : PoolQueue.Dequeue(); } public static T Rent(Func generator) { return PoolQueue.Count == 0 ? generator() : PoolQueue.Dequeue(); } public static void Return(T t) { if (t == null) { return; } PoolQueue.Enqueue(t); } public static void Return(T t, Action reset) { if (t == null) { return; } reset(t); PoolQueue.Enqueue(t); } public static void Clear() { PoolQueue.Clear(); } } }