4.0 介紹
泛型,一個期待已久的功能,隨著C# 2.0版本編譯器的到來最終出現。泛型是一個非常有用的功能,它使得您的代碼變得精簡而富有效率。這些將在秘訣4.1進行詳細講述。泛型的到來使得您可以編寫更為強大的應用程序,但這需要正確地使用它。如果您考慮把ArrayList,Queue,Stack和Hashtable對象轉變為使用相應的泛型版本,可以閱讀秘訣4.4,4.5和4.10。當您閱讀過後,會發現這種轉變不一定簡單,甚至有可能會不再打算進行轉變。
本章的另外一些秘訣涉及到.Net Framework 2.0所包含的其他泛型類,如秘訣4.6。其他秘訣講述一些泛型類的操作,如秘訣4.2,4.8和4.13。
4.1決定在何時何地使用泛型
問題
您希望在一個新工程內使用泛型,或者想把已有項目中的非泛型類轉換為等價的泛型版本。但您並非了解為何要這樣做,也不知道哪個非泛型類應該被轉換為泛型類。
解決方案
決定在何時何地使用泛型,您需要考慮以下幾件事件:
l 您所使用的類型是否包含或操作未指定的數據類型(如集合類型)?如果是這樣,如果是這樣,創建泛型類型將能提供更多的好處。如果您的類型只操作單一的指定類型,那麼就沒有必要去創建一個泛型類。
l 如果您的類型將操作值類型,那麼就會產生裝箱和拆箱操作,就應該考慮使用泛型來防止裝箱和拆箱操作。
l 泛型的強類型檢查有助於快速查找錯誤(也就是編譯期而非運行期),從而縮短bug修復周期。
l 在編寫多個類操作多個數據類型時是否遭遇到“代碼膨脹”問題(如一個ArrayList只存儲StreamReaders而另一個存儲StreamWriters)?其實編寫一次代碼並讓它工作於多個數據類型非常簡單。
l 泛型使得代碼更為清晰。通過消除代碼膨脹並進行強制檢查,您的代碼將變得更易於閱讀和理解。
討論
很多時候,使用泛型類型將使您受益。泛型將使得代碼重用更有效率,具有更快的執行速度,進行強制類型檢查,獲得更易讀的代碼。
閱讀參考
MSDN文檔中的“Generics OvervIEw”和“Benefits of Generics”主題。