用来解决成员膨胀和类型膨胀。
一句话:就是限定类型。
声明的时候泛化:给个符号代替,和数学里面的x一样 使用的时候具化:使用的时候就要指定具体类型了,数学里x不会是英文的x,x代表的是一个具体的数,可能是1,可能是π
泛型类
泛型接口一样的通过实现类传泛型参数
namespace ConsoleApp2{class Program{static void Main(string[] args){//在实例化的时候,我想给盒子装一本书,这时候我知道类型了,类型是Book。//用Book来替代我假设的泛型参数TBox<Book> box = new Box<Book>(new Book());//我想装一个苹果,类型是苹果Box<Apple> box2 = new Box<Apple>(new Apple());}class Book{public string Name { get; set; }}class Apple{public string Name { get; set; }}class Pen{public string Name { get; set; }}//一个泛型类,T只是个参数,泛指,在写的这个代码的时候我也不到是个啥类型class Box<T>{public T Goods { get; set; }public Box(T t){this.Goods = t;}}}}
泛型方法
class Program{static void Main(string[] args){//调用泛型方法会自动识别类型,可以不用写尖括号int i = Run(123, "字符串");}static T Run<T, S>(T t, S s){//进行一系列操作后//。。。。。。return t;}}
泛型委托
class Program{static void Main(string[] args){//限定了这个传入这个委托的方法的参数只能是2个,一个string,一个intAction<string, int> action = RRR;action.Invoke("第一个参数", 2)//最后一个参数返回值类型Func<int, decimal,int> func = Run;}static void RRR(string name,int a){Console.WriteLine("哈哈哈");}static T Run<T, S>(T t, S s){//进行一系列操作后//。。。。。。return t;}}
