Différence de performances pour les structures de contrôle 'pour' et 'foreach' en C#

Extrait de code qui donnera de meilleures performances? Le code ci-dessous segments ont été écrit en C#.

1.

for(int counter=0; counter<list.Count; counter++)
{
    list[counter].DoSomething();
}

2.

foreach(MyType current in list)
{
    current.DoSomething();
}
  • J'imagine qu'il n'a pas vraiment d'importance. Si vous rencontrez des problèmes de performances, il est presque certainement pas à cause de cela. Non pas que vous ne devriez pas vous poser la question...
  • À moins que votre application est très critique pour les performances je ne voudrais pas vous inquiéter à ce sujet. Beaucoup mieux de nettoyer et facilement compréhensible par le code.
  • Cela m'inquiète que certaines réponses ici semblent être publié par les personnes qui n'ont tout simplement pas le concept d'itérateur n'importe où dans leur cerveau, et donc pas de notion d'agents recenseurs ou les pointeurs.
  • Que 2e code ne compile pas. Système.L'objet n'a pas de membre appelé "valeur" (sauf si vous êtes vraiment méchants, ont défini comme une extension de la méthode et de la comparaison de délégués). Vivement le type de votre foreach.
  • Le premier code ne compile pas non plus, à moins que le type de list vraiment une count membre au lieu de Count.
  • Doublons: stackoverflow.com/questions/44220/... stackoverflow.com/questions/472191/c-for-vs-foreach

InformationsquelleAutor Kthevar | 2009-07-14