使用泛型行的最大好处就是代码重用,合理的使用泛型可以大大的解决我们编写代码的数量,同时也可以提高我们的程序性能
下面我通过一个简单的例子讲解
现在我们需要一个处理两个数据类型,int 类型和String的数据,他们都需要用到栈的操作,当我没没有泛型的时候需要写出两个栈
的数据结构
2.1 处理int类型
public class Stack
{
private int[] m_item;
public int Pop(){...}
public void Push(int item){...}
public Stack(int i)
{
this.m_item = new int[i];
}
}
2.2处理字符串类型
public class Stack
{
private string[] m_item;
public string Pop(){...}
public void Push(string item){...}
public Stack(int i)
{
this.m_item = new string[i];
}
}
2.3当然我们也可以用object代替int 和string类型的
public class Stack
{
private object[] m_item;
public object Pop(){...}
public void Push(object item){...}
public Stack(int i)
{
this.m_item = new[i];
}
}
2.4上面这个栈可以处理任何数据类型的数据,应为object是所有类的基类。虽然这样写可以处理各种数据类型,但在其中存在这拆箱和装箱,如果数据太多会影响到程序的性能,
因此在c#2.0的时候泛型就此诞生了,他借鉴C++的模板为我们提供了泛型,在使用泛型的时候程序会在编译阶段根据我们提供的类型生成相应的二进制代码,无须进行装箱和拆箱
因此在上面的代码中我们可以使用泛型解决代码如下,这样我们也可以对于任何数据类型都可以使用这个栈了
public class Stack<T>
{
private T[] m_item;
public T Pop(){...}
public void Push(T item){...}
public Stack(int i)
{
this.m_item = new T[i];
}
}