Dictionary<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 Visual Basic) for each C++ For Each 中的 C# 语言 (语句隐藏了枚举器的复杂性。 因此,建议使用 foreach,而不是直接操作枚举数。

枚举器可用于读取集合中的数据,但不能用于修改基础集合。

最初,枚举数定位在集合中第一个元素的前面。 方法 Reset 还会将枚举器带回此位置。 在此位置, Current 属性未定义。 因此,在读取 的值Current之前,必须调用 MoveNext 方法以将枚举器推进到集合的第一个元素。

属性 Current 返回相同的元素, MoveNext 直到调用 或 Reset 方法。 MoveNextCurrent 设置为下一个元素。

如果 MoveNext 传递集合的末尾,则枚举器位于集合中的最后一个元素之后,并 MoveNext 返回 false。 当枚举器位于此位置时,对 MoveNext 的后续调用也会返回 false。 如果最后一次MoveNext调用返回,falseCurrent则为未定义。 若要再次将 Current 设置为集合的第一个元素,可以调用 Reset 并接着调用 MoveNext

只要集合保持不变,枚举器就仍有效。 如果对集合进行了更改(例如添加元素或更改容量),枚举器将不可恢复地失效,并且下一次InvalidOperationException调用 MoveNextIEnumerator.Reset 引发 。

仅限 .NET Core 3.0+:唯一不使枚举器 Remove 失效的可变方法是 和 Clear

该枚举数不具有独占访问集合的权限;因此,枚举整个集合本质上不是一个线程安全的过程。 若要确保枚举过程中的线程安全性,可以在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。

System.Collections.Generic 命名空间中集合的默认实现是不同步的。

此方法是 O (1) 操作。

适用于

另请参阅