C中的迭代器就是屬性嗎,C 中的迭代器是作什麼用的?

2022-11-06 09:45:24 字數 3827 閱讀 5338

1樓:水嘆花

不是。迭代器是 c# 2.0 中的新功能。

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

迭代器概述

迭代器是可以返回相同型別的值的有序序列的一段**。

迭代器可用作方法、運算子或 get 訪問器的**體。

迭代器**使用 yield return 語句依次返回每個元素。yield break 將終止迭代。有關更多資訊,請參見 yield。

可以在類中實現多個迭代器。每個迭代器都必須像任何類成員一樣有唯一的名稱,並且可以在 foreach 語句中被客戶端**呼叫,如下所示:foreach(int x in sampleclass.

iterator2){}

迭代器的返回型別必須為 ienumerable、ienumerator、ienumerable或 ienumerator。

public class daysoftheweek : system.collections.ienumerable

;public system.collections.ienumerator getenumerator()}}

class testdaysoftheweek

}}輸出

sun mon tue wed thr fri sat

2樓:匿名使用者

不是,理解概念很重要。迭代器是(遍歷)方法,可以理解為動詞性質,屬性是名詞性質,只有方法改變屬性,而屬性改變不了方法,只能影響方法。你的姓名就是你的屬性之一,你可以通過一系列方法(寫申請報給公安局的方法,找熟人請客的方法等等)來修改你的名字。

再舉一個通俗易懂的例子,你參加別人婚禮穿了一套白色服裝(屬性之一白色),這可能會影響主人情緒,但是你可以通過回家換衣服等一系列方法(可以作為迭代或其它動作)來改變這些影響。

c#中的迭代器是作什麼用的?

3樓:孫中呂

你需要理解什麼是陣列array,什麼是集合iconnection,什麼是ilist開始.

舉個簡單例子:

陣列如 string ar=new string

這是一個簡單字串陣列。

假設我需要提取陣列中的每一個元素,我該怎麼辦呢?

所以那些天才們就想出一種方案,用c#語法表達是:

forech(string item in ar)

然後你可以把forech(string item in ar)這種語法理解為迭代器.

專業解釋:

1.迭代器是可以返回相同型別值的有序序列的一段**;

2.迭代器可用作方法、運算子或get訪問器的**體;

3.迭代器**使用yield return語句依次返回每個元素,yield break將終止迭代;

4.可以在類中實現多個迭代器,每個迭代器都必須像任何類成員一樣有惟一的名稱,並且可以在foreach語句中被客戶端**呼叫;

5.迭代器的返回型別必須為ienumerable和ienumerator中的任意一種;

6.迭代器是產生值的有序序列的一個語句塊,不同於有一個 或多個yield語句存在的常規語句塊;

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

8.迭代器塊在c#語法中不是獨特的元素,它們在幾個方面受到限制,並且主要作用在函式成員宣告的語義上,它們在語法上只是語句塊而已;

4樓:匿名使用者

檢視msdn。迭代器是 c# 2.0 中的新功能。

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

在武漢北大青鳥魯廣校區學習c#.net開發。

5樓:匿名使用者

c#中的迭代器可以讓你實現foreach訪問某個集合中的所有元素

c#索引器和迭代器的區別是什麼

6樓:匿名使用者

索引器允許類或結構的例項按照與陣列相同的方式進行索引

而迭代器主要是為foreach關鍵字服務的

打個比方吧(可能不恰當)

加入在桌面上擺上十張紙牌並按照一定的順序編上1~10的號碼,對應的為:

0 1 2 3 4 5 6 7 8 9

a b c d e f g h i j

如果是索引我索引第二張返回的就是b啦索引一次只返回一張!但是迭代器則是使用foreach一個一個返回;

一般索引是在瞭解集合中的物件的位置時才使用的;

而迭代器就是不知道集合中有哪些物件所以一個一個進行訪問。

應該明白了吧!

如何理解c#迭代器方法

7樓:匿名使用者

迭代器就是用來遍歷集合的。

與迭代器有關的介面,一個是ienumerable(ienumerable),另一個是ienumerator(ienumerator)。ienumerable中有getenumerator()方法,返回的值為ienumerator介面,用於取得集合的迭代器。ienumerator介面中有1.

movenext()方法,返回值為布林型別,用於判斷集合中是否還存在元素;2.current方法,用於取得集合中的元素;3.reset方法,將迭代器置於初始位置,不用管。

實際使用的時候,集合需要實現ienumerable介面,這樣就能通過getenumerator()取得迭代器enumerator。然後通過while(enumerator.movenext())的方式遍歷集合了。

至於方法的實現,就要看具體情況了,比如:。

public class demoaggregation:ienumerable

public ienumerator getenumerator()

//其他與集合有關的**

}public class demoenumerator:ienumerator

public bool movenext()

else

}public void reset()

public object current }}

c# 迭代器、列舉器、列舉數有什麼區別

8樓:不識臺北路

實現了ienumerator的類是可迭代類,它具有迭代器,但本身並不是迭代器。

getenumerator()方法返回的才是迭代器。

列舉器和迭代器【應該】就是一個意義。

列舉數【應該】就是列舉型別,是有一定意義的一些列元素的總合,但是同一時間,只能取到其中的一個值,如weekday.friday(注意與陣列的區別)

c#迭代器

9樓:潭胤罕靜秀

il並不支援這種寫法,這是c#編譯器的功能c#編譯器遇到這種**時,會幫你生成一個實現了ienumerator的內部類(不知道是不是匿名內部類),實際上還是生成類了,只不過是由編譯器完成的.

至於生成的**到底是什麼樣的,你可以藉助一些反編譯工具看看.

clr是不支援迭代器的

C的迭代器中與,C 中迭代器的加減

簡單的說,stl中,只有隨機迭代器支援 操作,但是所有的五種迭代器都支援 操作。讀讀 effectivestl 或者 c標準庫 不過這個問題很多書上都會講。iterator並不是真正的指標!iterator通過過載 運算子來實現對容器類中下一元素的訪問,而且通過過載引用運算子 和解引用運算子 使it...

C 的疑問,關於迭代器,C 的一個疑問,關於迭代器

過載運算子和表示式是不一樣的。表示式是按一條語句的整體考慮的,過載實際是函式,按函式思考就對了 c stl迭代器的問題,迭代器只是一個地址麼?會是陣列麼?迭代器不是 地址 它是物件的一個邏輯的位置資訊,不明白你所謂的 陣列 什麼意思,iterator當然指向的是單個物件 cin代表的是一個輸入流,其...

C 標準類中的元素迭代器是什麼意思

迭代器 iterator 是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的地址。迭代器修改了常規指標的介面,所謂迭代器是一種概念上的抽象 那些行為上像迭代器的東西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用演算法有機的統一起來。迭代...