AJA que l’on pouvait obtenir l’index dans une boucle foreach d’une façon assez pratique sans avoir à incrémenter un compteur à la main (ce qui est vulgaire 😏). La fonction Select de Linq possède en effet un overload qui prend une lambda prenant en charge l’index de boucle.
Avant C#7:
1 | foreach(var item in inputList.Select((wheel, i) => new { wheel, i})) { |
Mais ce n’est pas super car on se trimballe un item
dont on se passerait bien.
Heureusement, depuis C#7 (avec la déconstruction de Tuples), on peut directement assigner les variables :
1 | foreach((Wheel wheel, int i) in inputList.Select((value, i) => (wheel, i))) { |
Attention cependant, ça peut vite nuire à la lisibilité du code car on est forcé de spécifier les types et l’instruction foreach devient vite indigeste sur une ligne.