C#中迭代是什麼?迭代器又是什麼? 匿名使用者 1級 2008-12-24 回答

用最直觀的說法,迭代就是指迴圈,迭代器是指實現該迴圈的一種方式,下面講解什麼叫迭代器:

迭代器是C# 2。0中的新功能,它是方法、get訪問器或運算子,它使開發人員能夠在類或結構中支援foreach迭代,而不必實現整個IEnumerable介面。只需提供一個迭代器,即可遍歷類中的資料結構。當編譯器檢測到迭代器時,它將自動生成IEnumerable或IEnumerable介面的Current、MoveNext和Dispose方法。迭代器有以下特點:

迭代器是可以返回相同型別值的有序序列的一段程式碼;

迭代器可用作方法、運算子或get訪問器的程式碼體;

迭代器程式碼使用yield return語句依次返回每個元素,yield break將終止迭代;

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

迭代器的返回型別必須為IEnumerable和IEnumerator中的任意一種;? 迭代器是產生值的有序序列的一個語句塊,不同於有一個 或多個yield語句存在的常規語句塊;

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

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

C#中迭代是什麼?迭代器又是什麼? 回憶那麼美 1級 2008-12-25 回答

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

舉個簡單例子:

陣列如stringar=newstring[]{“a”,“b”,“c”}

這是一個簡單字串陣列。

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

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

forech(stringiteminar)

{

messagebox。show(item);

}

然後你可以把forech(stringiteminar)這種語法理解為迭代器。

專業解釋:

1。迭代器是可以返回相同型別值的有序序列的一段程式碼;

2。迭代器可用作方法、運算子或get訪問器的程式碼體;

3。迭代器程式碼使用yieldreturn語句依次返回每個元素,yieldbreak將終止迭代;

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

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

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

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

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