在我们写C#程序的时候经常遇到这样的问题。我们会写很多重复的代码。为什么说是重复的呢。比如说,因为我们用不同的函数去实现同一个功能,虽然实现的功能一样,但是由于参数的数据类型不同。所以我们有必要要重写。比如
public class A
{
private int[] m;
public int pop() {}
public void push(int b) {}
public A(int i) {this.m = new int[i]; }
}
上面这段代码用来实现一个栈的功能。但是它也只能够处理int类型的数据。如果要处理string类型的数据我们就要将里面的Int替换为string。
当然我们也想到用object这个通用类型。但是这样做的话,会发现它在执行效率上不怎么好。也就是数据类型的转换,装箱与拆箱。
如果我们用泛型来重写。效果就不同了
public class A <T>
{
private T[] m;
public T pop() {}
public void push(T b) {}
public A(int i) {this.m = new T[i]; }
}
可以发现类的写法不变。只是将int ,string这些类型用通用类型T来替换。这样就可以适用与任何类型了。
A﹤int﹥ a = new Stack﹤int﹥(10);
A<string> a=new A<string>(10)
适用泛型的好处:
泛型无需装箱与拆箱,类型转换
泛型是类型安全的。也就是说如果我们实现了int类型的,就不可能接受其它类型的数据。
|
|