Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Interface IEnumerable

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

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

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

O tipo IEnumerable expõe os membros a seguir.

  NomeDescrição
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetEnumeratorRetorna um enumerador que itera em uma coleção.
Superior

  NomeDescrição
Método de extensão públicoCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreAsParallel Permite a paralelização de uma consulta. (Definido por ParallelEnumerable.)
Método de extensão públicoCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreAsQueryableConverts an IEnumerable to an IQueryable. (Definido por Queryable.)
Método de extensão públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreCast<TResult>Converte os elementos de IEnumerable o tipo especificado. (Definido por Enumerable.)
Método de extensão públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreOfType<TResult>Filtra os elementos de IEnumerable com base em um tipo especificado. (Definido por Enumerable.)
Superior

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

É uma prática recomendada implementar IEnumerable e IEnumerator em suas classes de coleção para habilitar a sintaxe de foreach (For Each no Visual Basic), porém implementar IEnumerable não é necessário. 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 método de GetEnumerator que retorna uma interface, uma classe ou uma estrutura. Ao usar o Visual Basic, você deverá fornecer uma implementação de IEnumerator , que é retornada por GetEnumerator. Quando estiver desenvolvendo com C# você deve fornecer uma classe que contém uma propriedade de Current , e MoveNext e os métodos de Reset como descrito por IEnumerator, mas pela classe não tem que implementar IEnumerator.

O exemplo de código a seguir demonstra a prática recomendada para iterar uma coleção personalizado e implementando IEnumerableIEnumerator interfaces. Neste exemplo, os membros dessas interfaces não são chamados explicitamente, mas são implementados para oferecer suporte ao uso de foreach (For Each no Visual Basic) iteração pela coleção.

Para obter um exemplo que mostra como implementar a interface de IEnumerable , consulte Implementando a interface IEnumerable em uma classe de coleção


using System;
using System.Collections;

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

    public string firstName;
    public string lastName;
}

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];
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
       return (IEnumerator) GetEnumerator();
    }

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

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
 *
 */


.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft