1 引入泛型:延迟声明
2 如何声明和使用泛型
3 泛型的好处和原理
4 泛型类、泛型方法、泛型接口、泛型委托
5 泛型约束
6 协变 逆变
7 泛型缓存
泛型 Generic 本质 ~占位符 (必须编译器支持)
1.泛型类、泛型方法、泛型接口、泛型委托
2.泛型约束 1)基类约束 2)接口约束 3)引用类型约束 4)值类型约束 5)无参构造函数约束 关键字 where
3.协变 逆变 因为泛型存在的一个概念。
所谓的协变 就是 泛型可以用父类返回类型。关键词 out
Func<object> func = new Func<string>(() => "");
所谓逆变 就是 泛型中 可以用父类做参数类型。关键词 in
Action<string> func = new Action<object>(t => { });