概念
使用占位符T来代表某种类型,在编译期间能够决定其具体类型
格式
class MyGeneric <T>
使用
MyGeneric<int> mg = new MyGeneric<int>()
实例
一个普通的类
class Store
{
private int[] arr = new int[100];
public void Put(int v,int index)
{
arr[index] = v;
}
}
改造成泛型发
//T是类型占位符--->表示还没决定具体是什么类型,先把这个位置占着
class Store<T>
{
private T[] arr = new T[100];
public void Put(T v,int index)
{
arr[index] = v;
}
}
这样的好处是不用改变一种类型就写一个函数,减少代码的数量,提高代码的效率
在主函数中实例化
//对泛型类的实例化,T实例化为int
Store<int> store = new Store<int>();
原理:编译器在编译的时候会使用特化的类型替代掉类型占位符,生成具体的class代码
泛型方法格式
原函数
static void Swap(ref int a, ref int b)
{
int tmp = a;
a = b;
b = tmp;
}
改造成泛型函数
static void Swap<T>(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
}
使用泛型函数
int m = 10;
int n = 20;
Swap <int>(ref m, ref n);