一、什麼是迭代器?
迭代器(iterator)是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址。迭代器修改了常規指標的介面,所謂迭代器是一種概念上的抽象:那些行為上像迭代器的東西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用演算法有機的統一起來。
1.迭代器是可以返回相同型別值的有序序列的一段**;
2.迭代器可用作方法、運算子或get訪問器的**體;
3.迭代器**使用yieldreturn語句依次返回每個元素,yield break將終止迭代;
4.可以在類中實現多個迭代器,每個迭代器都必須像任何類成員一樣有惟一的名稱,並且可以在foreach語句中被客戶端,**呼叫如下所示:foreach(int x in ******class.iterator2){};
5.迭代器的返回型別必須為ienumerable和ienumerator中的任意一種;
6.迭代器是產生值的有序序列的乙個語句塊,不同於有乙個 或多個yield語句存在的常規語句塊;
7.迭代器不是一種成員,它只是實現函式成員的方式,理解這一點是很重要的,乙個通過迭代器實現的成員,可以被其他可能或不可能通過迭代器實現的成員覆蓋和過載;
8.迭代器塊在c#語法中不是獨特的元素,它們在幾個方面受到限制,並且主要作用在函式成員宣告的語義上,它們在語法上只是語句塊而已;
9.yield關鍵字用於指定返回的值。到達yieldreturn語句時,會儲存當前位置。下次呼叫迭代器時將從此位置重新開始執行。 迭代器對集合類特別有用,它提供一種簡單的方法來迭代不常用的資料結構(如二進位制樹)。
迭代器是一種檢查容器內元素並遍歷元素的資料型別。
二、迭代器的使用
建立迭代器最常用的方法是對 ienumerator 介面實現 getenumerator 方法。
【例子】
建立乙個 windows 應用程式,向窗體中新增乙個 richtextbox 控制項。建立乙個名為 family的類,其繼承 ienumerator 介面,該介面公開沒拘束,該列舉數支援在非泛型集合上進行簡單迭代。然後對 ienumerator 介面實現 getenumerator 方法建立迭代器。最後在窗體的 load 事件中使用 foreach 語句遍歷 family 類中的內容並輸出。
迭代器和分部類
迭代器可以使開發人員方便的使用foreach語句訪問類中的字段值,而分布類使程式的結構更加靈活,協同工作更加方便。迭代器 迭代器使用yield return 語句依此返回每個元素,yield break語句將終止迭代,可以在類中實現多個迭代器,每個迭代器必須像任何類成員一樣有唯一名稱,並且可以在fo...
C 分部類和分部方法的使用
將同乙個類編寫在多個檔案中,類的各個檔名不同,類名相同,類名前加partial關鍵字,這種型別叫分部類。在分部類中可以建立分部方法,方法名前加關鍵字partial,分部方法只能將方法分成兩部分,即宣告部分和實現部分分別位於不同的分部類裡。分部方法可以使靜態方法,但必須是隱式的私有方法,並且無返回值的...
分部類(partial class)和分部方法
類的宣告可以分割成幾個分部類的宣告。每個分部類的宣告都含有一些類成員的宣告。類的分部類宣告可以在同一檔案中也可以在不同檔案中。每個區域性宣告必須被標為partial class,而不是單獨的關鍵字class,分部類宣告看起來和普通類宣告相同,除了那個附加型別修飾符partial。分部方法是宣告在分部...