IteratorStateMachineAttribute Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Allows you to determine whether a method in Visual Basic is marked with the Iterator modifier.
System::Attribute
System.Runtime.CompilerServices::StateMachineAttribute
System.Runtime.CompilerServices::IteratorStateMachineAttribute
Assembly: mscorlib (in mscorlib.dll)
The IteratorStateMachineAttribute type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | IteratorStateMachineAttribute | Initializes a new instance of the IteratorStateMachineAttribute class. |
| Name | Description | |
|---|---|---|
![]() | StateMachineType | Returns the type object for the underlying state machine type that was generated by the compiler to implement the state machine method. (Inherited from StateMachineAttribute.) |
| Name | Description | |
|---|---|---|
![]() | Equals | Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
You should not apply the IteratorStateMachine attribute to methods in your code. For methods in Visual Basic that have the [69cb0b04-ac87-49d0-bcfe-810c0d60daff] modifier, the compiler will apply the IteratorStateMachine attribute in the emitted IL.
When a method (methodname) in Visual Basic has the Iterator modifier, then the compiler emits IL that includes a state machine structure that contains the code in the method. The emitted IL also contains a stub method (methodname) that calls into the state machine. The compiler adds the IteratorStateMachine attribute to the stub method, which allows tools to identify the corresponding state machine. Details of the emitted IL are subject to change in future releases of the compilers.
An iterator method performs a custom iteration over a collection. An iterator method uses the Yield (Visual Basic) statement to return each element one at a time. For more information, see [f45331db-d595-46ec-9142-551d3d1eb1a7].
Note: |
|---|
Using IteratorStateMachineAttribute to test whether a method is an iterator method does not apply to C#. |
The following example shows how to determine whether a method is an Iterator method. In IsIteratorMethod, the following steps occur:
A MethodInfo object for the method name is obtained by using Type::GetMethod.
A Type object for the attribute is obtained by using [4f733297-2503-4607-850c-15eba65fff90] or [0c08d880-515e-46bb-8cd2-48b8dd62c08d].
An attribute object for the method and attribute type is obtained by using MethodInfo.GetCustomAttribute. If GetCustomAttribute returns Nothing (Visual Basic), then the method does not contain the attribute.



Note: