181 votes

C# foreach avec index

Y a-t-il un langage c# équivalent de enumerate() de Python et Ruby each_with_index ?

276voto

Dan Finch Points 1837

Je garde cette méthode d’extension autour pour cela :

Et l’utiliser comme suit :

256voto

JaredPar Points 333733

Vous pouvez procéder comme suit

Cela créera une valeur de type anonyme pour chaque entrée dans la collecte. Il aura deux propriétés

  1. Valeur : avec la valeur d’origine dans la collection
  2. Index : avec l’index dans la collection

73voto

David Morton Points 10519

Le langage c# foreach n’est pas construit dans l’index. Vous devrez ajouter un entier à l’extérieur de la boucle foreach et incrémenter chaque fois.

Alternativement, vous pouvez utiliser une norme pour la boucle comme suit :

17voto

Daniel K Points 110

J’aime être en mesure d’utiliser foreach, alors j’ai fait une méthode d’extension et d’une structure :

et un exemple d’utilisation :

Une bonne chose est que si vous êtes habitué à la syntaxe de Python, vous pouvez toujours l’utiliser :

16voto

Jon Skeet Points 692016

Mis à part les réponses LINQ déjà donnés, j’ai une classe de « SmartEnumerable » qui vous permet d’obtenir l’index et le « premier/dernier »-ness. C’est un peu laid en termes de syntaxe, mais vous trouverez peut-être utile.

Nous pouvons probablement améliorer l’inférence de type à l’aide d’une méthode statique dans un type non générique, et typage implicite aidera aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X