IteratorStateMachineAttribute Class
Collapse the table of content
Expand the table of content

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.


Namespace:  System.Runtime.CompilerServices
Assembly:  mscorlib (in mscorlib.dll)

[AttributeUsageAttribute(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
public sealed class IteratorStateMachineAttribute : StateMachineAttribute

The IteratorStateMachineAttribute type exposes the following members.

Public methodIteratorStateMachineAttributeInitializes a new instance of the IteratorStateMachineAttribute class.

Public propertyStateMachineTypeReturns the type object for the underlying state machine type that was generated by the compiler to implement the state machine method. (Inherited from StateMachineAttribute.)

Public methodEqualsInfrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeReturns the hash code for this instance. (Inherited from Attribute.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodMatchWhen overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringReturns 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].


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:

Windows Phone OS

Supported in: 8.1, 8.0

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

© 2018 Microsoft