Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

IEnumerable, interface

Expose un énumérateur, qui prend en charge une itération simple sur une collection non générique.

Espace de noms :  System.Collections
Assembly :  mscorlib (dans mscorlib.dll)

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

Le type IEnumerable expose les membres suivants.

  NomDescription
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreGetEnumeratorRetourne un énumérateur qui itère au sein d'une collection.
Début

  NomDescription
Méthode d'extension publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreAsParallelActive la parallélisation d'une requête. (Défini par ParallelEnumerable.)
Méthode d'extension publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreAsQueryableConvertit un IEnumerable en IQueryable. (Défini par Queryable.)
Méthode d'extension publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreCast<TResult>Effectue un cast des éléments d'un IEnumerable vers le type spécifié. (Défini par Enumerable.)
Méthode d'extension publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreOfType<TResult>Filtre les éléments d'un IEnumerable en fonction du type spécifié. (Défini par Enumerable.)
Début

IEnumerable est l'interface de base pour toutes les collections non génériques qui peuvent être énumérées. Pour la version générique de cette interface, consultez System.Collections.Generic.IEnumerable<T>. IEnumerable contient une méthode unique, GetEnumerator, qui retourne IEnumerator. IEnumerator permet d'itérer au sein de la collection en exposant une propriété Current et MoveNext et des méthodes Reset.

Il est recommandé d'implémenter IEnumerable et IEnumerator sur vos classes de collection pour activer la syntaxe foreach (For Each en Visual Basic), cependant l'implémentation de IEnumerable n'est pas obligatoire. Si votre collection n'implémente pas IEnumerable, vous devez toujours suivre le modèle d'itérateur pour prendre en charge cette syntaxe en fournissant une méthode GetEnumerator qui retourne une interface, une classe ou une structure. Lorsque vous utilisez Visual Basic, vous devez fournir une implémentation de IEnumerator, qui est retournée par GetEnumerator. Lorsque vous développez avec C# vous devez fournir une classe qui contient une propriété Current,et les méthodes MoveNext et Reset comme décrit par IEnumerator, mais la classe ne doit pas implémenter IEnumerator.

L'exemple de code suivant illustre la meilleure pratique pour itérer une collection personnalisée en implémentant des interfaces IEnumerable et IEnumerator. Dans cet exemple, les membres de ces interfaces ne sont pas appelés explicitement, mais sont implémentés pour prendre en charge l'utilisation de foreach (For Each en Visual Basic) pour itérer au sein de la collection.

For a sample that shows how to implement the IEnumerable interface, see Implementing the IEnumerable Interface in a Collection Class


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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

.NET pour les applications Windows Phone

Pris en charge dans : 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 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft