ActivityCollection.GetEnumerator 方法

定义

实现到 ICollection 的枚举接口。

public:
 System::Collections::Generic::IEnumerator<System::Workflow::ComponentModel::Activity ^> ^ GetEnumerator();
public System.Collections.Generic.IEnumerator<System.Workflow.ComponentModel.Activity> GetEnumerator ();
override this.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<System.Workflow.ComponentModel.Activity>
Public Function GetEnumerator () As IEnumerator(Of Activity)

返回

IEnumerator<Activity>

可循环访问 ReadOnlyCollectionBase 实例的枚举数。

实现

注解

使用枚举器只能读取集合中的数据。 不能使用枚举器修改基础集合。

开始时,枚举器放在集合中的第一个元素之前。 Reset 也会将枚举器放回此位置。 在此位置,调用 Current 会引发异常。 因此,在读取 MoveNext 的值之前,必须调用 Current 将枚举器向前移动到集合的第一个元素。

在调用 CurrentMoveNext 之前,Reset 返回同一对象。 MoveNextCurrent 设置为下一个元素。

在传递到集合的末尾之后,枚举数放在集合中最后一个元素后面,且调用 MoveNext 会返回 false。 如果最后一次调用 MoveNext 返回了 false,则调用 Current 会引发异常。

若要再次将 Current 设置为集合的第一个元素,可以调用 Reset 并接着调用 MoveNext

只要集合保持不变,枚举器就仍有效。 如果对该集合进行了更改(例如添加、修改或删除元素),则该枚举数将变为无效(这一变化是不可逆转的),并且下次调用 MoveNextReset 将引发 InvalidOperationException。 如果在 MoveNextCurrent 之间修改集合,那么即使枚举数已经无效,Current 也将返回它所设置成的元素。

枚举数没有对集合的独占访问权;因此,从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 即使在同步集合时,其他线程仍然可以修改该集合。 这会导致枚举器引发异常。 若要确保枚举过程中的线程安全性,可以在整个枚举期间锁定集合,或者捕获由其他线程进行的更改所导致的异常。

适用于