C 中的迭代器基礎

2022-04-10 02:58:11 字數 1500 閱讀 5686

yield

關鍵字用於指定返回的乙個或多個值。 到達 yield return 語句時,會儲存當前位置。 下次呼叫迭代器時將從此位置重新開始執行。

迭代器對集合類特別有用,它提供一種簡單的方法來迭代複雜的資料結構(如二進位制樹)。

--摘自msdn

其實照我的理解來說,迭代器就是可以用foreach訪問的資料,也就說,是乙個集合。

按照上面的迭代器返回型別來看,那麼我們自己也可以用類繼承迭代器的介面來實現我們自己的迭代器。

實現繼承ienumerable

介面的迭代器的類,需要實現getenumerator()方法,舉乙個例子:

1

public

class citycollection : ienumerable

2 ;4 ienumerator ienumerable.getenumerator()

5

10 }

11 }

這樣的話,就是乙個基本的迭代類了,我們建立citycollection物件後就可以使用foreach便利它了。

1 citycollection collection = new citycollection();

2foreach (string item in collection)

3

但是ienumerable是乙個泛型介面,未加泛型的話,也就只能進行遍歷,而不能使用了linq查詢的方式對這個集合進行查詢或者其他操作了,所以,我們可以將上面的迭代類進行一下修改,增加泛型型別,修改如下:

1

public

class citycollection : ienumerable

2 ;4 ienumerator ienumerable.getenumerator()

5

10 }

11 ienumerator ienumerable.getenumerator()

12

17 }

18 }

通過上面的修改,便利的時候就可以使用linq的進行自身的結果集查詢和其他的操作了,具體這個東西怎麼叫,我還真的不清楚,也表述不清楚,所以就這麼說,那位高手知道的話,還請指教,謝謝了。

1

static

void main(string args)

2 8 console.writeline("

查詢方法:

");9

foreach (string item in collection.where(t => t.contains("

河")))

10

13 system.console.readkey();

14 }

高手可以無視的,但是希望高手給指教下,上面**中的where的查詢方式專業的名詞叫什麼,謝謝。

基礎 C 迭代器

迭代器是 c 2.0 中的新功能。迭代器是方法 get 訪問器或運算子,它使您能夠在類或結構中支援 foreach 迭代,而不必實現整個 ienumerable 介面。您只需提供乙個迭代器,即可遍歷類中的資料結構。當編譯器檢測到迭代器時,它將自動生成 ienumerable 或 ienumerabl...

C 基礎 迭代器

迭代器是什麼 在表現效果上看 標準迭代器的實現方法 region 標準迭代器的實現方法 關鍵介面口 ienumerator,ienumerable 命名空間 using system collections 可以通過同時繼承ienumerable和ienumerator實現其中的方法 class c...

C 中的迭代器

迭代器iterator,它是指標的泛化形式,每種迭代器只能用於它自己的容器類。1 前遞增和後遞增操作符 將迭代器跳到下乙個資料項 2 前遞減和後遞減操作符 將迭代器跳到上乙個資料項 3 相等操作符 和不相等操作符!測試兩個迭代器是否指向同乙個位置 4 提領操作符 加入p是迭代器變數,使用 p就能訪問...