Comment parcourir une collection qui prend en charge IEnumerable?
Un habitué pour chacun fera:
foreach (var item in collection)
{
// do your stuff
}
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
.
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 :-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}