Maison > Article > développement back-end > En savoir plus sur la différence entre les boucles for et foreach
La différence entre la boucle for et foreach
foreach repose sur IEnumerable.
La première fois que var a dans GetList() est appelée, GetEnumerator est appelé pour renvoyer le premier objet et lui attribuer to a,
MoveNext est appelé à chaque fois que var a dans GetList() est exécuté dans le futur
La méthode GetList() n'est exécutée qu'une seule fois <.>
foreach (var a in GetList()) { ... } = var a; IEnumerator e = GetList().GetEnumerator(); while (e.MoveNext) { a = e.Current; }La boucle for repose sur le positionnement de l'indice. List[3] est équivalent à *(list + 3).
for(int i = 0; i < GetCount(); i++) { .... } = int i = 0; while(i < GetCount()) { ... }La boucle for appellera GetCount() pour comparer la longueur. à chaque fois, il boucle. Le foreach ne prend pas en compte la longueur et n'appelle GetList qu'une seule fois ().Conclusion.La boucle for est plus efficace que foreach lorsque la longueur est fixe ou la boucle foreach. la longueur n'a pas besoin d'être calculée.Il a des performances lorsque la longueur est incertaine ou que la longueur est calculée, il est plus pratique d'utiliser foreach.Et les objets dans le. la collection sera verrouillée pendant foreach. Ils ne pourront pas être modifiés pendant la période.
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!