foreach
boucles C# et leur implémentationQuelles classes utilisent des foreach
boucles ?
La boucle foreach
en C# est fortement utilisée avec les classes implémentant IEnumerable
ou IEnumerable<T>
. Cela inclut toute classe fournissant une méthode GetEnumerator()
qui renvoie un IEnumerator
ou un IEnumerator<T>
. Essentiellement, cela couvre toutes les classes implémentant ICollection
ou ICollection<T>
, telles que les tableaux, les listes et autres collections.
foreach
Mécanique des boucles :
Une boucle foreach
standard (par exemple, foreach (int i in obj) { ... }
) ressemble fonctionnellement à ceci :
<code class="language-csharp">var tmp = obj.GetEnumerator(); int i; // C# 4.0 and earlier while (tmp.MoveNext()) { int i; // C# 5.0 and later i = tmp.Current; { ... } // Loop body }</code>
Considérations importantes : si l'enquêteur (tmp
) implémente IDisposable
, il est éliminé (semblable à une instruction using
). La déclaration de int i
diffère selon la version C#. En C# 5.0 et versions ultérieures, il est déclaré dans la boucle ; les versions antérieures le déclarent à l'extérieur. Cette distinction est cruciale lors de l'utilisation de i
dans des méthodes anonymes ou des expressions lambda à l'intérieur de la boucle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!