解決「功能相似、資料型別不同」需重複撰寫程式碼的問題。以通用型別參數 T 取代具體型別,實例化時指定實際型別。
public class Stack { private int[] m_item; public int Pop(){...} public void Push(int item){...} }
// 需要 string 版、long 版... 必須複製修改
object 的缺點public class Stack { private object[] m_item; public object Pop(){...} public void Push(object item){...} }
InvalidCastException
Node1 x = new Node1(); stack.Push(x);
Node2 y = (Node2)stack.Pop(); // 執行時錯誤,編譯器無法檢測
以 T 取代 object,實例化時指定型別,執行期編譯為原生碼,兼顧效能、型別安全、程式碼重用。