IteratorStateMachineAttribute Class

July 28, 2014

Allows you to determine whether a method in Visual Basic is marked with the Iterator modifier.

System.Object
  System.Attribute
    System.Runtime.CompilerServices.StateMachineAttribute
      System.Runtime.CompilerServices.IteratorStateMachineAttribute

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

'Declaration
<AttributeUsageAttribute(AttributeTargets.Method, Inherited := False, AllowMultiple := False)> _
Public NotInheritable Class IteratorStateMachineAttribute _
	Inherits StateMachineAttribute

The IteratorStateMachineAttribute type exposes the following members.

  NameDescription
Public methodIteratorStateMachineAttributeInitializes a new instance of the IteratorStateMachineAttribute class.
Top

  NameDescription
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.)
Top

  NameDescription
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.)
Top

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].

NoteNote:

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.

Show:
© 2014 Microsoft