9yue5
在C#中罩旋,任何一個類型直接或者間接繼承于Object边涕。
泛型 Generic
定義:泛型能夠?qū)㈩愋妥鳛閰?shù)來傳遞
創(chuàng)建類型時用一個特定的符號如“T”來作為一個占位符代替實際的類型
等待在實例化時再用一個實際的類型來代替
優(yōu)點:1、重用代碼衍锚,保護(hù)類型的安全以及提高性能(裝箱拆箱本來就是對性能的消耗)
? ? ? ? ? ?2友题、 降低強(qiáng)制轉(zhuǎn)換或裝箱操作的成本和風(fēng)險
? ? ? ? ? ?3、可以對泛型參數(shù)進(jìn)行限定以訪問特定數(shù)據(jù)類型的方法
泛型的限制
泛型成員因類型不確定构拳,可能是類咆爽、結(jié)構(gòu)體、字符置森、枚舉……
所以不能使用算術(shù)運算符斗埂、比較運算符等進(jìn)行運算;可以使用賦值運算符 =
泛型類型參數(shù)
泛型類型參數(shù)可以是編譯器識別的任何數(shù)據(jù)類型
泛型類型參數(shù)命名也要遵守命名規(guī)則
1. 泛型類型參數(shù)可以有多個
2. 泛型類型參數(shù)可以是編譯器識別的任何數(shù)據(jù)類型
3. 泛型類型參數(shù)命名需要遵守命名規(guī)則
(1) 使用描述性名稱命名泛型類型凫海,并且使用T作為前綴
(2) 單個字母名稱完全可以讓人了解其表示的含義使用單個大寫字母命名
泛型類型參數(shù)的約束
約束的好處?
可以增加約束類型及其繼承層次結(jié)構(gòu)中的所有類型所支持的允許操作和方法調(diào)用的數(shù)量
null 是空的引用 (空對象)呛凶,值類型比較為false??
引用類型比較恒等空的話 為0,不恒等為false
泛型類寫在<>后面{}前面
方法中寫在()后
注:提示:由于在泛型當(dāng)中需要比較大小行贪,所以該泛型必須是實現(xiàn)了接口(IComparable)
泛型方法
泛型方法是使用泛型類型參數(shù)聲明的方法漾稀,
當(dāng)方法中存在某些參數(shù)的類型不明確的時候就可以使用泛型方法。
未知具體類型的參數(shù)就使用泛型類型參數(shù)替代建瘫。
? ? ? ? ? ?泛型方法重載
泛型類
泛型類封裝了不是特定于具體數(shù)據(jù)類型的操作崭捍,
當(dāng)類中存在未知參數(shù)類型的時候就可以使用泛型類
泛型類最常用于集合。 從集合中添加和移除項這樣的操作都以大體上相同的方式執(zhí)行啰脚,與所存儲數(shù)據(jù)的類型無關(guān)殷蛇。
創(chuàng)建泛型類的過程為:從一個現(xiàn)有的具體類開始,
逐一將每個類型更改為類型參數(shù)橄浓,直至達(dá)到通用化和可用性的最佳平衡粒梦。
泛型類實例化:
泛型類設(shè)計規(guī)則(怎么用泛型類)
1. 將哪些類型通用化為泛型類型參數(shù)
2. 如果存在約束,應(yīng)對泛型類型參數(shù)應(yīng)用什么約束
3. 是否將泛型行為分解為基類和子類
4. 是否實現(xiàn)一個或多個泛型接口