C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法

C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法

ID:32766701

大?。?7.38 KB

頁數(shù):16頁

時間:2019-02-15

C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法_第1頁
C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法_第2頁
C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法_第3頁
C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法_第4頁
C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法_第5頁
資源描述:

《C#C++C語言學(xué)會編程第17課迭代器、匿名方法和擴展方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第17課迭代器、匿名方法和擴展方法迭代器是一個語句塊,它可以產(chǎn)生一系列有序值,從而使得foreach語句可以訪問該序列。匿名方法是一種特殊的方法,它由delegate關(guān)鍵字、參數(shù)列表(可選)和包含在“{”和“}”分隔符中的語句列表組成,并省略了方法的名稱。擴展方法可以向現(xiàn)有的類型“添加”新的方法,它是一種靜態(tài)方法,通過擴展類型的實例來調(diào)用擴展方法。本章將講解C#語言中的迭代器、匿名方法和擴展方法,主要介紹以下知識點。?創(chuàng)建非泛型和泛型迭代器;?非泛型和泛型枚舉器;?創(chuàng)建匿名方法;?將匿名方法作為參數(shù)傳遞;?聲明

2、擴展方法;?調(diào)用擴展方法。17.1迭代器迭代器(iterator)是一個產(chǎn)生(yield)有序值序列的語句塊(block)。它也可以通過yield關(guān)鍵字對數(shù)組或集合類執(zhí)行自定義迭代。迭代器包含以下兩個特有的語句。yieldreturn語句,產(chǎn)生迭代的下一個值。yieldbreak語句,指示迭代完成。當(dāng)?shù)鲌?zhí)行到y(tǒng)ieldreturn語句時,迭代器會保存當(dāng)前位置。如果該迭代器再一次被調(diào)用時,該迭代器將從上述保存的位置重新開始執(zhí)行。迭代器可以產(chǎn)生一系列的值,而且所有值的類型均相同,該類型稱為迭代器的返回類型,又稱

3、為產(chǎn)生類型。17.1.1創(chuàng)建非泛型迭代器IEnumerable接口表示公開枚舉數(shù),該枚舉數(shù)支持在非泛型集合上進行簡單迭代。IEnumerable接口只包含GetEnumerator()方法,它返回一個循環(huán)訪問集合的枚舉數(shù)。創(chuàng)建一個非泛型迭代器最常用的方法是實現(xiàn)IEnumerable接口的GetEnumerator()方法。17.1.2創(chuàng)建泛型迭代器如果要創(chuàng)建一個泛型迭代器,往往需要實現(xiàn)IEnumerable和IEnumerable接口的GetEnumerator()方法。17.1.3IEnumerator

4、和IEnumerator接口IEnumerator表示枚舉器的非泛型接口,支持對非泛型集合的簡單迭代。IEnumerator表示枚舉器的泛型接口,支持泛型集合的簡單迭代。1.IEnumerator接口2.IEnumerator接口17.2匿名方法顧名思義,匿名方法(anonymousmethod)是一種隱藏了名稱的方法。在C#2.0版本之前,聲明委托的唯一方法是使用命名方法,即方法必須指定其名稱。C#2.0引入了匿名方法實現(xiàn)了同樣的功能,C#3.0及其以上版本,使用Lambda表達式(第18章

5、)取代了匿名方法,它比匿名方法更加簡潔。匿名方法允許與委托關(guān)聯(lián)的代碼以“內(nèi)聯(lián)”方式寫入使用委托的位置,從而方便地將代碼直接“綁定”到委托實例。17.2.1創(chuàng)建匿名方法匿名方法由delegate關(guān)鍵字、參數(shù)列表(可選)和包含在“{”和“}”分隔符中的語句列表組成。從匿名方法的組成元素可以看到,匿名方法已經(jīng)省略了該方法的名稱。17.2.2將匿名方法作為參數(shù)傳遞正是因為匿名方法允許與委托關(guān)聯(lián)的代碼以“內(nèi)聯(lián)”方式,從而使得可以將匿名方法作為方法的參數(shù)來傳遞。17.3擴展方法擴展方法可以使得開發(fā)人員能夠向現(xiàn)有類型“添加”

6、新的方法,而且不需要創(chuàng)建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種靜態(tài)方法,可以通過擴展類型的實例來調(diào)用擴展方法。17.3.1聲明擴展方法聲明擴展方法時,需要使用this修飾符。擴展方法的第一個參數(shù)指定該方法所作用的類型,并使用this修飾符作為該參數(shù)的前綴。17.3.2導(dǎo)入擴展方法導(dǎo)入擴展方法比較簡單,只要使用using指令引入擴展方法所在的命名空間即可。實際上,被導(dǎo)入的擴展方法作為其第一個參數(shù)的類型上的附加方法。17.3.3調(diào)用擴展方法使用using指令導(dǎo)入ToInt32(thisstr

7、ingstr)擴展方法之后,就可以調(diào)用該擴展方法了。17.4實例一:擴展string類型的方法【實例17-1】為string類型擴展了一個方法,該方法的名稱為“ToInt32(thisstringstr)”,它可以將一個字符串轉(zhuǎn)換為一個整數(shù)。17.5小結(jié)本章主要介紹了C#語言中的迭代器、匿名方法和擴展方法,如創(chuàng)建非泛型和泛型迭代器、非泛型和泛型枚舉器、創(chuàng)建匿名方法、將匿名方法作為參數(shù)傳遞、聲明擴展方法、調(diào)用擴展方法等。其中,讀者要著重掌握創(chuàng)建非泛型和泛型迭代器和創(chuàng)建匿名的方法,為后續(xù)編寫C#程序代碼奠定基礎(chǔ)。下

8、一章將要介紹C#語言中的Lambda表達式和查詢表達式。17.6習(xí)題在VisualStudio2008集成開發(fā)環(huán)境中創(chuàng)建名稱為“Test_17”的控制臺應(yīng)用程序,并實現(xiàn)以下功能。(1)將名稱為“class1.cs”的文件添加到該應(yīng)用程序中。(2)在該應(yīng)用程序中創(chuàng)建一個泛型迭代器,并使用該迭代器。

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。