web-dev-qa-db-fra.com

Comment parcourir une collection qui prend en charge IEnumerable?

Comment parcourir une collection qui prend en charge IEnumerable?

75
mrblah

Un habitué pour chacun fera:

foreach (var item in collection)
{
    // do your stuff   
}
127
Fredrik Mörk

En plus des méthodes déjà suggérées d'utilisation d'une boucle foreach, j'ai pensé mentionner également que tout objet implémentant IEnumerable fournit également une interface IEnumerator via l'interface GetEnumerator méthode. Bien que cette méthode ne soit généralement pas nécessaire, elle peut être utilisée pour effectuer une itération manuelle sur des collections. Elle est particulièrement utile lors de l'écriture de vos propres méthodes d'extension pour les collections.

IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
    while (sequenceEnum.MoveNext())
    {
        // Do something with sequenceEnum.Current.
    }
}

Un bon exemple est le cas où vous souhaitez parcourir deux séquences simultanément, ce qui n’est pas possible avec une boucle foreach.

83
Noldorin

ou même une ancienne méthode très classique

IEnumerable<string> collection = new List<string>() { "a", "b", "c" };

for(int i = 0; i < collection.Count(); i++) 
{
    string str1 = collection.ElementAt(i);
    // do your stuff   
}

peut-être aimeriez-vous aussi cette méthode :-)

43
Alexa Adrian
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{

}
7
Darin Dimitrov