什麽是泛型對象?
簡介什麽是泛型 泛型是程序設計語言的壹種特性。允許程序員在強類型程序設計語言中編寫代碼時定義壹些可變部份,那些部份在使用前必須作出指明。各種程序設計語言和其編譯器、運行環境對泛型的支持均不壹樣。將類型參數化以達到代碼復用提高軟件開發工作效率的壹種數據類型。泛型類是引用類型,是堆對象,主要是引入了類型參數這個概念。 泛型的定義 泛型的定義主要有以下兩種: 在程序編碼中壹些包含類型參數的類型,也就是說泛型的參數只可以代表類,不能代表個別對象。(這是當今較常見的定義)在程序編碼中壹些包含參數的類。其參數可以代表類或對象等等。(現在人們大多把這稱作模板)不論使用那個定義,泛型的參數在真正使用泛型時都必須作出指明。 壹些強類型編程語言支援泛型,其主要目的是加強類型安全及減少類轉換的次數,但壹些支持泛型的編程語言只能達到部份目的。 [編輯本段]壹些編程語言的泛型特性 NET Framework 的泛型 由於.NET Framework 泛型的類型參數之實際類型在運行時均不會被消除,運行速度會因為類型轉換的次數減少而加快。 另外,使用 GetType 方法可於程序運行時得知泛型及其類型參數的實際類型,更可以運用反射編程。 允許對個別泛型的類型參數進行約束,包括以下幾種形式(假設 C是泛型的類型參數, 是壹般類、泛類,或是泛型的類型參數):T 是壹個類。T 是壹個值類型。T 具有無參數的公有建構方法。T 實現接口 I 。T 是 C ,或繼承自 C 。 Java 的泛型 Java 泛型的參數只可以代表類,不能代表個別對象。由於 Java 泛型的類型參數之實際類型在編譯時會被消除,所以無法在運行時得知其類型參數的類型。Java 編譯器在編譯泛型時會自動加入類型轉換的編碼,故運行速度不會因為使用泛型而加快。Java 允許對個別泛型的類型參數進行約束,包括以下兩種形式(假設 T 是泛型的類型參數,C 是壹般類、泛類,或是泛型的類型參數):T 實現接口 I 。T 是 C ,或繼承自 C 。 C++ 的泛型(模板) C++ 無法對泛型的類型參數進行約束。在編譯時,每個被使用的封閉泛型類型(即是所有泛型參數的實際類型都已被指明的泛型)都會有獨立的編碼產生,編譯器會在此時確保類型安全性。可是如果泛型要運用其泛型參數的某成員,而該泛型參數又不包含該成員的時候,編譯器所產生的錯誤信息或會看似與實際問題無關,增加除錯的難度。 [編輯本段]泛型的好處: 泛型是c#2.0的壹個新增加的特性,它為使用c#語言編寫面向對象程序增加了極大的效力和靈活性。不會強行對值類型進行裝箱和拆箱,或對引用類型進行向下強制類型轉換,所以性能得到提高。它允許程序員將壹個實際的數據類型的規約延遲至泛型的實例被創建時才確定。泛型為開發者提供了壹種高性能的編程方式,能夠提高代碼的重用性,並允許開發者編寫非常優雅的解決方案。