静态属性和字段都会在第一次实例化对象的时候 初始化成功 然后一直放在内存中 不会释放 缓存就是这样实现的
泛型跟委托都是为了实现代码重用
协变和逆变
委托Func在定义参数都会用到
参数加了一个out后 集合中的类型可以是他子类的类型
逆变 左边是子类 右边是父类
泛型缓存比字典缓存有优势