SortedDictionary<TKey,TValue>.ValueCollection.GetEnumerator 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回循环访问 SortedDictionary<TKey,TValue>.ValueCollection 的枚举数。
public:
System::Collections::Generic::SortedDictionary<TKey, TValue>::ValueCollection::Enumerator GetEnumerator();
public System.Collections.Generic.SortedDictionary<TKey,TValue>.ValueCollection.Enumerator GetEnumerator ();
member this.GetEnumerator : unit -> System.Collections.Generic.SortedDictionary<'Key, 'Value>.ValueCollection.Enumerator
Public Function GetEnumerator () As SortedDictionary(Of TKey, TValue).ValueCollection.Enumerator
返回
用于 SortedDictionary<TKey,TValue>.ValueCollection 的 SortedDictionary<TKey,TValue>.ValueCollection.Enumerator 结构。
注解
foreach
C++ For Each
中的 C# 语言 (for each
语句,Visual Basic) 隐藏枚举器的复杂性。 因此,建议使用 foreach
,而不是直接操作枚举数。
枚举器可用于读取集合中的数据,但不能用于修改基础集合。
最初,枚举数定位在集合中第一个元素的前面。 在此位置上,未定义 Current。 在读取值Current之前,必须调用MoveNext该方法以将枚举器提升到集合的第一个元素。
该 Current 属性返回相同的对象,直到 MoveNext 调用为止。 MoveNext 将 Current 设置为下一个元素。
如果 MoveNext 传递集合的末尾,枚举器将定位在集合中的最后一个元素之后并 MoveNext 返回 false
。 当枚举器处于此位置时,后续调用 MoveNext 也会返回 false
。 如果返回false
的最后一次调用MoveNext,Current则为未定义。 无法再次将 Current 设置为集合的第一个元素;必须改为创建新的枚举器实例。
只要集合保持不变,枚举器就仍有效。 如果对集合进行了更改,例如添加、修改或删除元素,枚举器将不可恢复地失效,并且下次调用 MoveNext 或 IEnumerator.Reset 引发枚举 InvalidOperationException器。
枚举数没有对集合的独占访问权;因此,从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 若要确保枚举过程中的线程安全性,可以在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。
System.Collections.Generic 命名空间中集合的默认实现是不同步的。
此方法是一个 O (log n) 操作,其中 n 是集合中的多个元素。