泛型的學習
1.什麼是泛型
泛型是 2.0 版 C# 語言和公共語言執行庫 (CLR) 中的一個非常重要的新功能。
我們在程式設計程式時,經常會遇到功能非常相似的模組,只是它們處理的資料不一樣。但我們沒有辦法,只能分別寫多個方法來處理不同的資料型別。這個時候,那麼問題來了,有沒有一種辦法,用同一個方法來處理傳入不同種類型引數的辦法呢?泛型的出現就是專門來解決這個問題的。
2.初步瞭解泛型
為什麼要使用泛型呢?
上面定義了一個ShowType的類,裡面定義了三個方法,分別輸出引數的值和型別,這三個方法的方法體是差不多的,我們可不可以改為一個方法來實現呢?
.net 1.0時代
在上圖中我們將方法的引數改為Object型別,來將三個方法整合,但是這樣會對效能造成一定的影響(會多進行一次裝箱拆箱的操作),看看使用泛型是怎麼解決這個問題的
.net 2.0時代
這是一個泛型方法,它有兩個引數,一個是型別引數,一個值引數。泛型方法宣告的時候沒有指定引數型別,而是推遲到使用方法的時候才指定引數型別(延遲思想)。型別可以定義多個,在使用的時候型別引數可以不傳,IDE自動推算。
在這種情況下使用泛型方法來實現,就減少了裝箱拆箱。
3.泛型的用途(泛型方法、泛型類、泛型介面、泛型委託)
泛型方法在上面已經記錄了。
泛型類:
泛型介面:
泛型委託:
4.泛型約束
在泛型約束引數必須為值型別時,有一個方法Default(),輸出當前值型別的預設值。而且泛型約束是可以疊加的。
此篇是自己學習泛型時所做的筆記,放在部落格上留作記錄。如果有前輩發現錯誤,還望指點。謝謝!