ayi_2 <p>Le <code>foreach</code> sert à itérer sur des collections qui implémentent <a href="http://msdn.microsoft.com/en-us/library/9eekhta0%28v=vs.110%29.aspx"><code>IEnumerable</code></a>. Il le fait en appelant <a href="http://msdn.microsoft.com/en-us/library/s793z9y2(v=vs.110).aspx"><code>GetEnumerator</code></a> sur la collection, qui retournera un <a href="http://msdn.microsoft.com/en-us/library/78dfe2yb(v=vs.110).aspx"><code>Enumerator</code></a>.</p> <p>Cet Enumerator possède une méthode et une propriété :</p> <ul> <li> <p><code>MoveNext()</code></p> </li> <li> <p><code>Current</code></p> </li> </ul> <p><code>Current</code> retourne l’objet sur lequel l’Enumerator se trouve actuellement, <code>MoveNext</code> met à jour <code>Current</code> vers l’objet suivant.</p> <p>Le concept d’index est étranger au concept d’énumération et ne peut pas être réalisé.</p> <p>Pour cette raison, la plupart des collections peuvent être parcourues à l’aide d’un indexeur et de la construction de boucle for.</p> <p>Je préfère grandement utiliser une boucle for dans cette situation plutôt que de suivre l’index avec une variable locale.</p>