freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

dotnet之美——第1章c中的泛型-資料下載頁

2025-08-16 23:25本頁面
  

【正文】 異于浪費你的時間。所以我不在這里繼續(xù)討論了,它們的概念是完全一樣的,只是聲明的語法有些差異罷了,而這點差異,相信你可以很輕松地通過查看MSDN解決。 泛型方法我們再來考慮這樣一個問題:假如我們有一個很復雜的類,它執(zhí)行多種基于某一領域的科學運算,我們管這個類叫做SuperCalculator,它的定義如下:public class SuperCalculator { public int SuperAdd(int x, int y) { return 0。 } public int SuperMinus(int x, int y) { return 0。 } public string SuperSearch(string key) { return null。 } public void SuperSort(int[] array) { }}由于這個類對算法的要求非常高,.Net框架內置的快速排序算法不能滿足要求,所以我們考慮自己實現一個自己的排序算法,注意到SuperSearch()和SuperSort()方法接受的參數類型不同,所以我們最好定義一個泛型來解決,我們將這個算法叫做SpeedSort(),既然這個算法如此之高效,我們不如把它定義為public的,以便其他類型可以使用,那么按照前面兩節(jié)學習的知識,代碼可能類似于下面這樣:public class SuperCalculatorT where T:IComparable { // CODE:略 public void SpeedSort(T[] array) { // CODE:實現略 }}這里穿插講述一個關于類型設計的問題:確切的說,將SpeedSort()方法放在SuperCaculator中是不合適的。為什么呢?因為它們的職責混淆了,SuperCaculator的意思是“超級計算器”,那么它所包含的公開方法都應該是與計算相關的,而SpeedSort()出現在這里顯得不倫不類,當我們發(fā)現一個方法的名稱與類的名稱關系不大時,就應該考慮將這個方法抽象出去,把它放置到一個新的類中,哪怕這個類只有它一個方法。這里只是一個演示,我們知道存在這個問題就可以了。好了,我們回到正題,盡管現在SuperCalculator類確實可以完成我們需要的工作,但是它的使用卻變得復雜了,為什么呢?因為SpeedSort()方法污染了它,僅僅為了能夠使用SpeedSort()這一個方法,我們卻不得不將類型參數T加到SuperCalculator類上,使得即使不調用SpeedSort()方法時,創(chuàng)建SuperCalculator實例時也得接受一個類型參數。為了解決這個問題,我們自然而然地會想到:有沒有辦法把類型參數T加到方法上,而非整個類上,也就是降低T作用的范圍。答案是可以的,這便是本小節(jié)的主題:泛型方法。類似地,我們只要修改一下SpeedSort()方法的簽名就可以了,讓它接受一個類型參數,此時SuperCalculator的定義如下:public class SuperCalculator{ // CODE:其他實現略 public void SpeedSortT(T[] array) where T : IComparable { // CODE:實現略 }}接下來我們編寫一段代碼來對它進行一個測試:Book[] bookArray = new Book[2]。Book book1 = new Book(124, C )。Book book2 = new Book(45, .Net之美)。SuperCalculator calculator = new SuperCalculator()。Book(bookArray)。因為SpeedSort()方法并沒有實現,所以這段代碼沒有任何輸出,如果你想看到輸出,可以簡單地把上面冒泡排序的代碼貼進去,這里我就不再演示了。這里我想說的是一個有趣的編譯器能力,它可以推斷出你傳遞的數組類型以及它是否滿足了泛型約束,所以,上面的SpeedSort()方法也可以像下面這樣調用:(bookArray)。這樣盡管它是一個泛型方法,但是在使用上與普通方法已經沒有了任何區(qū)別。 總結本節(jié)中我們學習了掌握泛型所需要的最基本知識,你看到了需要泛型的原因,它可以避免重復代碼,還學習到了如何使用類型參數約束和泛型方法。擁有了本節(jié)的知識,你足以應付日常開發(fā)中的大部分場景。在下面兩節(jié),我們將繼續(xù)泛型的學習,其中包括泛型在集合類中的應用,以及泛型的高級話題。 14 / 14
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1