List<T>.GetEnumerator 方法

定义

返回循环访问 List<T> 的枚举数。

public:
 System::Collections::Generic::List<T>::Enumerator GetEnumerator();
public System.Collections.Generic.List<T>.Enumerator GetEnumerator ();
member this.GetEnumerator : unit -> System.Collections.Generic.List<'T>.Enumerator
Public Function GetEnumerator () As List(Of T).Enumerator

返回

用于 List<T>.EnumeratorList<T>

注解

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

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

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

Current 调用 之前 MoveNext , 属性返回相同的 对象。 MoveNextCurrent 设置为下一个元素。

如果 MoveNext 传递集合的末尾,则枚举器位于集合中最后一个元素之后,并 MoveNext 返回 false。 当枚举器位于此位置时,对 MoveNext 的后续调用也会返回 false。 如果最后一次MoveNext调用返回 ,falseCurrent则为未定义。 无法再次将 Current 设置为集合的第一个元素;必须改为创建新的枚举器实例。

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

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

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

此方法是 O (1) 操作。

适用于

另请参阅