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