叠代器

叠代器

一種檢查容器内元素并遍曆元素的數據類型
叠代器(iterator)有時又稱遊标(cursor),是程式設計的軟件設計模式,可在容器物件(container,例如鍊表或陣列)上遍訪的接口,設計人員無需關心容器物件的内容。它可以把抽象容器和通用算法有機的統一起來。叠代器使開發人員能夠在類或結構中支持foreach叠代,而不必整個實現IEnumerable或者IEnumerator接口。叠代器(iterator)是一種對象,它能夠用來遍曆标準模闆庫容器中的部分或全部元素,每個叠代器對象代表容器中的确定的地址。叠代器修改了常規指針的接口,所謂叠代器是一種概念上的抽象:那些行為上像叠代器的東西都可以叫做叠代器。
    中文名:叠代器 外文名:iterator 别名: 别稱:遊标

解釋

叠代器(iterator)是一種對象,它能夠用來遍曆标準模闆庫容器中的部分或全部元素,每個叠代器對象代表容器中的确定的地址。叠代器修改了常規指針的接口,所謂叠代器是一種概念上的抽象:那些行為上像叠代器的東西都可以叫做叠代器。然而叠代器有很多不同的能力,它可以把抽象容器和通用算法有機的統一起來。

叠代器提供一些基本操作符,不同之處在于,叠代器是個所謂的複雜的指針,具有遍曆複雜數據結構的能力。其下層運行機制取決于其所遍曆的數據結構。因此,每一種容器型别都必須提供自己的叠代器。事實上每一種容器都将其叠代器以嵌套的方式定義于内部。因此各種叠代器的接口相同,型号卻不同。這直接導出了泛型程序設計的概念:所有操作行為都使用相同接口,雖然它們的型别不同。

功能

叠代器使開發人員能夠在類或結構中支持foreach叠代,而不必整個實現IEnumerable或者IEnumerator接口。隻需提供一個叠代器,即可遍曆類中的數據結構。當編譯器檢測到叠代器時,将自動生成IEnumerable接口或者IEnumerator接口的Current,MoveNext和Dispose方法。

特點

1、叠代器是可以返回相同類型值的有序序列的一段代碼;

2、叠代器可用作方法、運算符或get訪問器的代碼體;

3、叠代器代碼使用yieldreturn語句依次返回每個元素,yield break将終止叠代;

4、可以在類中實現多個叠代器,每個叠代器都必須像任何類成員一樣有惟一的名稱,并且可以在foreach語句中被客戶端,代碼調用如下所示:foreach(int x in SimpleClass.Iterator2);

5、叠代器的返回類型必須為IEnumerable和IEnumerator中的任意一種;

6、叠代器是産生值的有序序列的一個語句塊,不同于有一個 或多個yield語句存在的常規語句塊;

7、叠代器不是一種成員,它隻是實現函數成員的方式,理解這一點是很重要的,一個通過叠代器實現的成員,可以被其他可能或不可能通過叠代器實現的成員複蓋和重載;

8、叠代器塊在C#語法中不是獨特的元素,它們在幾個方面受到限制,并且主要作用在函數成員聲明的語義上,它們在語法上隻是語句塊而已;

9、yield關鍵字用于指定返回的值。到達yieldreturn語句時,會保存當前位置。下次調用叠代器時将從此位置重新開始執行。 叠代器對集合類特别有用,它提供一種簡單的方法來叠代不常用的數據結構(如二進制樹)。

相關詞條

相關搜索

其它詞條