C#笔记——泛型

69 阅读1分钟

概念

使用占位符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);