C#中迭代是什麼?迭代器又是什麼?
用最直觀的說法,迭代就是指迴圈,迭代器是指實現該迴圈的一種方式,下面講解什麼叫迭代器:
迭代器是C# 2。0中的新功能,它是方法、get訪問器或運算子,它使開發人員能夠在類或結構中支援foreach迭代,而不必實現整個IEnumerable介面。只需提供一個迭代器,即可遍歷類中的資料結構。當編譯器檢測到迭代器時,它將自動生成IEnumerable或IEnumerable介面的Current、MoveNext和Dispose方法。迭代器有以下特點:
迭代器是可以返回相同型別值的有序序列的一段程式碼;
迭代器可用作方法、運算子或get訪問器的程式碼體;
迭代器程式碼使用yield return語句依次返回每個元素,yield break將終止迭代;
可以在類中實現多個迭代器,每個迭代器都必須像任何類成員一樣有惟一的名稱,並且可以在foreach語句中被客戶端程式碼呼叫;
迭代器的返回型別必須為IEnumerable和IEnumerator中的任意一種;? 迭代器是產生值的有序序列的一個語句塊,不同於有一個 或多個yield語句存在的常規語句塊;
迭代器不是一種成員,它只是實現函式成員的方式,理解這一點是很重要的,一個透過迭代器實現的成員,可以被其他可能或不可能透過迭代器實現的成員覆蓋和過載;
迭代器塊在C#語法中不是獨特的元素,它們在幾個方面受到限制,並且主要作用在函式成員宣告的語義上,它們在語法上只是語句塊而已;
你需要理解什麼是陣列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#語法中不是獨特的元素,它們在幾個方面受到限制,並且主要作用在函式成員宣告的語義上,它們在語法上只是語句塊而已;