Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês
Esta documentação foi arquivada e não está sendo atualizada.

Interface IEnumerable

Expõe o enumerador, que oferece suporte a uma iteração simples em uma coleção não genéricas.

Namespace:  System.Collections
Assembly:  mscorlib (em mscorlib.dll)

[ComVisibleAttribute(true)]
[GuidAttribute("496B0ABE-CDEE-11d3-88E8-00902754C43A")]
public interface IEnumerable

Para a versão genérica dessa interface consulte System.Collections.Generic.IEnumerable<T>.

Observações para Implementers:

IEnumerable deve ser implementado para dar suporte a foreach semântica do Visual Basic. Classes de COM permitem enumeradores também implementam essa interface.

O exemplo de código a seguir demonstra a implementação das interfaces IEnumerable e IEnumerator para uma coleção personalizada. Neste exemplo, membros dessas interfaces não são chamados explicitamente, mas eles são implementados para dar suporte ao uso de foreach (For Each no Visual Basic) para iterar na coleção.

using System;
using System.Collections;

publicclass Person
{
    public Person(string fName, string lName)
    {
        this.firstName = fName;
        this.lastName = lName;
    }

    public string firstName;
    public string lastName;
}

publicclass People : IEnumerable
{
    private Person[] _people;
    public People(Person[] pArray)
    {
        _people = new Person[pArray.Length];

        for (int i = 0; i < pArray.Length; i++)
        {
            _people[i] = pArray[i];
        }
    }

        IEnumerator IEnumerable.GetEnumerator()
        {
            returnnew PeopleEnum(_people);
        }
}

publicclass PeopleEnum : IEnumerator
{
    public Person[] _people;

    // Enumerators are positioned before the first element// until the first MoveNext() call.int position = -1;

    public PeopleEnum(Person[] list)
    {
        _people = list;
    }

    publicbool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    publicvoid Reset()
    {
        position = -1;
    }

    public object Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                thrownew InvalidOperationException();
            }
        }
    }
}

class App
{
    staticvoid Main()
    {
        Person[] peopleArray = new Person[3]
        {
            new Person("John", "Smith"),
            new Person("Jim", "Johnson"),
            new Person("Sue", "Rabon"),
        };

        People peopleList = new People(peopleArray);
        foreach (Person p in peopleList)
            Console.WriteLine(p.firstName + " " + p.lastName);

    }
}

/* This code produces output similar to the following:
 *
 * John Smith
 * Jim Johnson
 * Sue Rabon
 *
 */

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

o.NET Framework e.NET Compact Framework não oferecem suporte a todas as versões de cada plataforma. Para obter uma lista de versões suportadas, consulte Requisitos de sistema do .NET framework.

.NET Framework

Compatível com: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatível com: 3.5, 2.0, 1.0

XNA Framework

Compatível com: , 1.0
Mostrar: