[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'System' (#rtl)

# IEnumerator

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

Enumerator support interface

## Declaration

Source position: objpash.inc line 273

`type IEnumerator = interface(IInterface)`
`function GetCurrent;` |  | Returns the current element in the iteration cycle
`function MoveNext;` |  | Move to the next value
`procedure Reset;` |  | Reset the pointer
`property Current: TObject; [r]` |  | Return the current item
`end;`

## Inheritance

`IEnumerator` |  | Enumerator support interface
`IInterface`
?

## Description

IEnumerator is the interface needed by the For ... in ... language construct, when operating on classes. It contains all methods that the compiler needs to implement a loop.

A for in loop like the following:

    For O in MyObject do
      begin
      // do things
      end;

is treated by the compiler as equivalent to the following code:

    Var
      I : IEnumerator;
      O : TObject;

    begin
      I:=MyObject.GetEnumerator;
      While I.MoveNext do
        begin
        O:=I.GetCurrent;
        // Do things
        end;
    end.

Any class that implements the IEnumerable interface must be able to return an IEnumerator instance for the compiler to use in a For in loop.

## See also

IEnumerable |  | Interface to retrieve an enumerator from a class.