using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Myh
{//类池(引用类型的类回收循环利用)public class ClassObjectPool:IDisposable{//类对象 在池中的 常驻数量public Dictionary ClassObjectCount{private set;get;}//类对象池缓存字典,key是hash_code,value是该类型的缓存队列public Dictionary> m_dicClassObjectPool;#if UNITY_EDITOR//在unity面板中显示的信息(类型:数量?)public Dictionary DicInspector = new Dictionary();
#endifpublic ClassObjectPool(){ClassObjectCount = new Dictionary();m_dicClassObjectPool = new Dictionary>();}#region 设置类常驻数量//设置类常驻数量public void SetResideCount(byte count) where T : class{//得到该类型的hashCodeint key = typeof(T).GetHashCode();ClassObjectCount[key] = count;}#endregion//取出一个队列中的对象//模板类型约束,约束是类 或者是 结构体(class 和 struct都可以new,但是不能同时约束class和struct,第二个约束只能约束可以new)public T Dequeue() where T : class,new(){//只能把引用类型的变量当成锁lock (m_dicClassObjectPool){//先找到这个类的哈希(先算出这个类的哈希码)int key = typeof(T).GetHashCode();Queue