Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

IEnumerable (Interfaz)

Expone un enumerador, que admite una iteración simple en una colección no genérica.

Espacio de nombres:  System.Collections
Ensamblado:  mscorlib (en mscorlib.dll)

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

El tipo IEnumerable expone los siguientes miembros.

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetEnumeratorDevuelve un enumerador que recorre en iteración una colección.
Arriba

  NombreDescripción
Método de extensión públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAsParallelHabilita la paralelización de una consulta. (Definido por ParallelEnumerable).
Método de extensión públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAsQueryableConvierte una interfaz IEnumerable en IQueryable. (Definido por Queryable).
Método de extensión públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCast<TResult>Convierte los elementos de IEnumerable en el tipo especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsOfType<TResult>Filtra los elementos de IEnumerable en función de un tipo especificado. (Definido por Enumerable).
Arriba

IEnumerable es la interfaz base para todas las colecciones no genéricas que pueden ser enumeradas. Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.IEnumerable<T>. IEnumerable contiene un método, GetEnumerator, que devuelve IEnumerator. IEnumerator proporciona la capacidad de iterar por la colección expone una propiedad de Current y MoveNext y los métodos de Reset .

Se recomienda implementar IEnumerable y IEnumerator en las clases de colección para habilitar la sintaxis de foreach (For Each en Visual Basic), no obstante implementar IEnumerable no se requiere. Si la colección no implementa IEnumerable, debe seguir el modelo de iterador para admitir esta sintaxis proporcionando un método de GetEnumerator que devuelve una interfaz, clase o struct. Al utilizar Visual Basic, debe proporcionar una implementación de IEnumerator , devuelta por GetEnumerator. Al desarrollar con C# debe proporcionar una propiedad de Current , y MoveNext y los métodos de Reset descrito por IEnumerator, pero la clase no tiene que implementar IEnumerator.

El ejemplo de código siguiente se muestra el procedimiento recomendado para recorrer una colección personalizada implementando las interfaces de IEnumerable y de IEnumerator . En este ejemplo, no se llama explícitamente a los miembros de estas interfaces, pero se implementan para admitir el uso de foreach (For Each en Visual Basic) para recorrer en iteración la colección.

Para obtener un ejemplo que muestra cómo implementar la interfaz de IEnumerable , consulta Implementar la interfaz IEnumerable en una clase de colección


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

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: 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 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft