語言

SortedDictionary<TKey,TValue>.IEnumerable.GetEnumerator 方法

定義

傳回逐一查看集合的列舉值。

 virtual System::Collections::IEnumerator ^ System.Collections.IEnumerable.GetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator();
abstract member System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
override this.System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
Function GetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator

傳回

可以用 IEnumerator 來遍歷集合。

實作

備註

foreach C# 語言(For EachVisual Basic)的陳述隱藏了列舉器的複雜性。 因此,建議使用 foreach ,而非直接操作列舉器。

列舉器可用於讀取集合中的資料,但無法用來修改底層集合。

最初,列舉器會被放置在集合中的第一個元素之前。 在此位置,該 Current 性質尚未定義。 因此,你必須呼叫 MoveNext 方法,將列舉子推進到集合的第一個元素,才能讀取 的 Current值。

該 Current 屬性會回傳相同的元素,直到 MoveNext 方法被呼叫為止。 MoveNext 設定 Current 為下一個元素。

若 MoveNext 通過集合的末尾,列舉器會位於集合的最後一個元素之後,並 MoveNext 返回 false。 當列舉器處於此位置時,後續呼叫 MoveNext 也返回 false。 若最後一次呼叫 MoveNext 回傳 false, Current 則為未定義。 你不能再次設定 Current 到集合的第一個元素;你必須建立一個新的列舉器實例。

只要集合未曾改變,列舉器仍然有效。 若對集合進行變更,例如新增、修改或刪除元素,列舉子將無法恢復地失效,下一次呼叫 MoveNext 或 Reset 會拋 InvalidOperationException出 。

列舉值沒有集合的獨佔存取權;因此,透過集合列舉本質上不是安全線程的程式。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合。 若要允許多個線程存取集合以進行讀取和寫入,您必須實作自己的同步處理。

命名空間中 System.Collections.Generic 集合的預設實作並未同步。

此方法是一種 O(log n) 運算,其中 n 是集合中的元素數量。

適用於

另請參閱