ActivityCollection.GetEnumerator 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
实现到 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)
返回
可循环访问 ReadOnlyCollectionBase 实例的枚举数。
实现
注解
使用枚举器只能读取集合中的数据。 不能使用枚举器修改基础集合。
开始时,枚举器放在集合中的第一个元素之前。 Reset 也会将枚举器放回此位置。 在此位置,调用 Current 会引发异常。 因此,在读取 MoveNext 的值之前,必须调用 Current 将枚举器向前移动到集合的第一个元素。
在调用 Current 或 MoveNext 之前,Reset 返回同一对象。 MoveNext 将 Current 设置为下一个元素。
在传递到集合的末尾之后,枚举数放在集合中最后一个元素后面,且调用 MoveNext 会返回 false
。 如果最后一次调用 MoveNext 返回了 false
,则调用 Current 会引发异常。
若要再次将 Current
设置为集合的第一个元素,可以调用 Reset
并接着调用 MoveNext。
只要集合保持不变,枚举器就仍有效。 如果对该集合进行了更改(例如添加、修改或删除元素),则该枚举数将变为无效(这一变化是不可逆转的),并且下次调用 MoveNext 或 Reset
将引发 InvalidOperationException。 如果在 MoveNext 和 Current 之间修改集合,那么即使枚举数已经无效,Current 也将返回它所设置成的元素。
枚举数没有对集合的独占访问权;因此,从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 即使在同步集合时,其他线程仍然可以修改该集合。 这会导致枚举器引发异常。 若要确保枚举过程中的线程安全性,可以在整个枚举期间锁定集合,或者捕获由其他线程进行的更改所导致的异常。