Maison  >  Article  >  développement back-end  >  En savoir plus sur la différence entre les boucles for et foreach

En savoir plus sur la différence entre les boucles for et foreach

迷茫
迷茫original
2017-03-26 10:37:151555parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn