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