使用泛型行的最大好處就是代碼重用,合理的使用泛型可以大大的解決我們編寫代碼的數量,同時也可以提高我們的程序性能
下面我通過一個簡單的例子講解
現在我們需要一個處理兩個數據類型,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];
}
}