總所周知,.NET出現(xiàn)在.net framework 2.0,為什么要在2.0引入泛型那,因?yàn)槲④浽陂_始開發(fā).net框架時(shí)并沒有想過多個(gè)類型參數(shù)傳輸時(shí)對(duì)方法的重構(gòu),這樣一來,開發(fā)人員就要面對(duì)傳輸多種類型的參數(shù)而不得以寫多個(gè)方法,但是,開發(fā)者的智慧是無限的,創(chuàng)造性也由此被挖掘出來,在泛型之前,便有開發(fā)者為了提到代碼利用率便想到使用object類型為參數(shù)類型來傳遞參數(shù),這無疑解決了多個(gè)類型的參數(shù)傳輸時(shí)并需要寫多個(gè)方法的問題。那么object類型為什么能實(shí)現(xiàn)接受多個(gè)不同類型的參數(shù)那?有了object類型還為什么要設(shè)計(jì)泛型那?object類型又有那么弊端那?其實(shí)有點(diǎn)基礎(chǔ)的開發(fā)人員應(yīng)該都知道object類型是所有類型的父類,通過里氏轉(zhuǎn)換原則我們知道所有父類出現(xiàn)的地方都可以用子類替換,這樣就可以接收多個(gè)參數(shù)了,同時(shí)因?yàn)閛bject類型轉(zhuǎn)換裝拆箱對(duì)性能的影響,在2.0時(shí),微軟推出了泛型。
下面,我們引入泛型的聲明和調(diào)用:
1 public static void Show<T>(T tParameter)2 {3 Console.WriteLine($"This is{typeof(GenericClass)}Show<T>,paratype={tParameter.GetType()},value={tParameter}");4 }
打印的內(nèi)容我們沒必要關(guān)注,我們只看方法頭,我們可以看到方法頭和參數(shù)里面加了T這個(gè)字母,其實(shí)這就是泛型聲明的規(guī)則,泛型在聲明時(shí),需要在方法頭加上<T>(T parm),
注意,尖括號(hào)里面的字母是可變的,可以是任何字母,但是尖括號(hào)里面的字母必須和參數(shù)里面的字母要一致,這樣一個(gè)方法就聲明好了。
下面我們接下來研究下泛型的調(diào)用過程,泛型是如何在未命名參數(shù)類型的情況下來聲明參數(shù)類型的,在下面程序入口我寫了兩個(gè)List的類型
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26