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
Personas que lo han encontrado útil: 2 de 3 - Valorar este tema

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)
[ComVisibleAttribute(true)]
[GuidAttribute("496B0ABE-CDEE-11d3-88E8-00902754C43A")]
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 puedan enumerarse. Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.IEnumerable<T>. IEnumerable contiene un único método, GetEnumerator, que devuelve IEnumerator. IEnumerator proporciona la capacidad para recorrer en iteración la colección expone una propiedad Current y los métodos MoveNext y Reset .

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

El ejemplo de código siguiente muestra el procedimiento recomendado para recorrer una colección personalizada implementando las interfaces IEnumerable y 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.


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, 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

, , 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.
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.