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

Interface IEnumerable

 

Publicado: agosto de 2016

System_CAPS_noteObservação

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Expõe um enumerador que dá suporte a uma iteração simples em uma coleção não genérica.

Para procurar o código-fonte do .NET Framework para este tipo, consulte o Reference Source.

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

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

NomeDescrição
System_CAPS_pubmethodGetEnumerator()

Retorna um enumerador que itera em uma coleção.

NomeDescrição
System_CAPS_pubmethodAsParallel()

Sobrecarregado. Habilita a paralelização de uma consulta.(Definido pelo ParallelEnumerable.)

System_CAPS_pubmethodAsQueryable()

Sobrecarregado. Converte um IEnumerable em um IQueryable.(Definido pelo Queryable.)

System_CAPS_pubmethodCast<TResult>()

Converte os elementos de um IEnumerable para o tipo especificado.(Definido pelo Enumerable.)

System_CAPS_pubmethodOfType<TResult>()

Filtra os elementos de um IEnumerable com base em um tipo especificado.(Definido pelo Enumerable.)

System_CAPS_noteObservação

Para exibir o código-fonte do .NET Framework para este tipo, consulte o Reference Source. Percorra o código-fonte online, baixe a referência para exibição offline e percorrer as fontes (incluindo atualizações e patches) durante a depuração; consulte instructions.

IEnumerableé a interface base para todas as coleções não genéricas que podem ser enumerados. Para a versão genérica dessa interface consulte System.Collections.Generic.IEnumerable<T>. IEnumerablecontém um único método, GetEnumerator, que retorna um IEnumerator. IEnumeratorfornece a capacidade de iterar pela coleção ao expor um Current propriedade e MoveNext e Reset métodos.

É uma prática recomendada para implementar IEnumerable e IEnumerator em suas classes de coleção para habilitar o foreach (For Each no Visual Basic) sintaxe, no entanto implementando IEnumerable não é necessária. Se sua coleção não implementa IEnumerable, você ainda deve seguir o padrão de iterador para oferecer suporte a essa sintaxe, fornecendo um GetEnumerator método que retorna uma interface, classe ou estrutura. Ao usar o Visual Basic, você deve fornecer um IEnumerator implementação, o que é retornada pelo GetEnumerator. Quando o desenvolvimento com o c#, você deve fornecer uma classe que contém um Current propriedade e MoveNext e Reset métodos conforme descrito pelo IEnumerator, mas a classe precisa implementar IEnumerator.

O exemplo de código a seguir demonstra a prática recomendada para iterar uma coleção personalizada Implementando o IEnumerable e IEnumerator interfaces. Neste exemplo, os membros dessas interfaces não forem chamados explicitamente, mas eles são implementados para suporte ao uso de foreach (For Each no Visual Basic) para iterar pela coleção. Este exemplo é um aplicativo de Console concluído. Para compilar o aplicativo do Visual Basic, altere o objeto de inicialização para Sub Main do projeto propriedades página.

Para obter um exemplo que mostra como implementar a IEnumerable de interface, consulteImplementing the IEnumerable Interface in a Collection Class

using System;
using System.Collections;

// Simple business object.
public class Person
{
    public Person(string fName, string lName)
    {
        this.firstName = fName;
        this.lastName = lName;
    }

    public string firstName;
    public string lastName;
}

// Collection of Person objects. This class
// implements IEnumerable so that it can be used
// with ForEach syntax.
public class 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];
        }
    }

// Implementation for the GetEnumerator method.
    IEnumerator IEnumerable.GetEnumerator()
    {
       return (IEnumerator) GetEnumerator();
    }

    public PeopleEnum GetEnumerator()
    {
        return new PeopleEnum(_people);
    }
}

// When you implement IEnumerable, you must also implement IEnumerator.
public class 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;
    }

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

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Person Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

class App
{
    static void 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
 *
 */

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1
Retornar ao início
Mostrar: