.NET泛型程式設計簡介 (轉)

amyz發表於2007-08-16
.NET泛型程式設計簡介 (轉)[@more@]

泛型已經離我們不遠了,在最近隨 SERVER Yukon Beta1發行的.NET 1.2中就已經有了泛型的影子。雖然現在它還是問題多多,但是相信隨著新版.NET Framework的正式發行(正式發行時的版本號會是2.0),這些問題會得到解決。因此我們也該為.NET泛型程式設計做些準備了。

:namespace prefix = o ns = "urn:schemas--com::office" />

.NET是一個單根繼承系統,所有的型別都派生自。我以前一直認為在單根繼承系統中用不著泛型。既然所有的東西都可以作為Object傳遞,又何必使用泛型呢?只是增加複雜度而已,除了看起來高深一點,似乎沒有別的什麼好處了。但是,當兩個最著名的單根系統,和.NET,都勢不可擋地要加入泛型程式設計時,我不免要重新審視這個問題——為什麼一定要泛型程式設計?

歸納起來,泛型比非泛型具有下面兩個優點:

1、  更加

在非泛型程式設計中,雖然所有的東西都可以作為Object傳遞,但是在傳遞的過程中免不了要進行型別轉換。而型別轉換在執行時是不安全的。使用泛型程式設計將可以減少不必要的型別轉換,從而提高安全性。

2、  更高

在非泛型程式設計中,將簡單型別作為Object傳遞時會引起Boxing和Unboxing操作,這兩個過程都是具有很大開銷的。使用泛型程式設計就不必進行Boxing和Unboxing操作了。

.NET泛型具有很好的二進位制重用性。這一點得益於.NET將泛型內建在CLR之中。C++泛型和評估中Java泛型所依靠的是它們各自的所提供的特性,編譯器在編譯泛型程式碼時將確切的型別展開,這就難免會出現程式碼膨脹的問題。而.NET的泛型程式碼是在執行時由JIT即時編譯的,這樣CLR就可以為不同型別重用大部分的即時編譯程式碼了。

下面兩篇文章詳細地介紹了.NET中的泛型程式設計:

x">More on Generics in the CLR


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962407/,如需轉載,請註明出處,否則將追究法律責任。

相關文章