Collection.IEnumerable.GetEnumerator 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
它會有一個列舉器來遍歷集合。
virtual System::Collections::IEnumerator ^ ICollectionGetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator();
abstract member ICollectionGetEnumerator : unit -> System.Collections.IEnumerator
override this.ICollectionGetEnumerator : unit -> System.Collections.IEnumerator
Function ICollectionGetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator
傳回
一個 IEnumerator 可以用來遍歷集合的物件。
備註
C# 語言的 foreach 陳述(Visual Basic 中為 for each)隱藏了列舉器的複雜性。 因此,建議使用 foreach ,而非直接操作列舉器。
列舉器可用於讀取集合中的資料,但無法用來修改底層集合。
最初,列舉器會被放置在集合中的第一個元素之前。 此 Reset 方法也會將調查員拉回此位置。 在此位置,該 Current 性質尚未定義。 因此,你必須呼叫 MoveNext 方法,將列舉子推進到集合的第一個元素,才能讀取 的 Current值。
Current 回傳相同物件,直到被呼叫其中一 MoveNext 或 Reset 。 MoveNext 設定 Current 為下一個元素。
若 MoveNext 通過集合的末尾,列舉器會位於集合的最後一個元素之後,並 MoveNext 返回 false。 當列舉器處於此位置時,後續呼叫 MoveNext 也返回 false。 若最後一次呼叫 MoveNext 返回 false, Current 則未定義。 若要再次設定 Current 為集合的第一個元素,你可以呼叫 Reset ,接著 MoveNext。
只要集合未曾改變,列舉器仍然有效。 若對集合進行變更,例如新增、修改或刪除元素,列舉器將無法恢復,其行為也無法定義。
列舉值沒有集合的獨佔存取權;因此,透過集合列舉本質上不是安全線程的程式。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合。 若要允許多個線程存取集合以進行讀取和寫入,您必須實作自己的同步處理。