Instructions d'itération

Références

L'actualité

Librairie

L'information

Introduction

Vous pouvez créer des boucles avec les instructions d'itération. Les instructions d'itération entraînent une exécution des instructions incorporées un certain nombre de fois, selon les critères de terminaison des boucles. Ces instructions sont exécutées dans l'ordre, sauf quand une instruction de saut est rencontrée.

Les mots clés suivants sont utilisés dans des instructions d'itération :

  • do
  • for
  • foreach, in
  • while

do

L'instruction do exécute une instruction ou un bloc d'instructions tant qu'une expression booléenne donne la valeur true. Dans la mesure où cette expression est évaluée après chaque exécution de la boucle, une boucle do-while s'exécute une ou plusieurs fois. Cela diffère de la boucle while, qui s'exécute zéro ou plusieurs fois.

À tout moment dans le bloc d'instructions do, vous pouvez sortir de la boucle à l'aide de l'instruction break.

Vous pouvez passer directement à l'évaluation de l'expression while à l'aide de l'instruction continue. Si l'expression correspond à true, l'exécution passe à la première instruction de la boucle. Sinon, l'exécution passe à la première instruction après la boucle. Vous pouvez également quitter une boucle do-while en utilisant les instructions goto, return ou throw.

Exemple


for

L'instruction for exécute une instruction ou un bloc d'instructions tant qu'une expression booléenne donne la valeur true.

À tout moment dans le bloc d'instructions for, vous pouvez sortir de la boucle à l'aide de l'instruction break, ou passer à l'itération suivante de la boucle à l'aide de l'instruction continue. Vous pouvez également quitter une boucle for en utilisant les instructions goto, return ou throw.

Structure de l'instruction for
Chaque instruction for définit des sections initialiseur, condition et itérateur :

Ces trois sections sont facultatives. Le corps de la boucle est une instruction ou un bloc d'instructions. L'exemple suivant montre l'instruction for avec toutes les sections définies :


La section initialiseur
Les instructions figurant dans la section initialiseur sont exécutées une seule fois, avant d'entrer dans la boucle. La section initialiseur contient au choix :

La déclaration et l'initialisation d'une variable de boucle locale, qui n'est pas accessible à partir de l'extérieur de la boucle, ou

Zéro, une ou plusieurs expressions d'instruction parmi celles de la liste suivante, séparées par des virgules :

  • Instruction d'assignation
  • Appel d'une méthode
  • Expression d'incrémentation préfixée ou suffixée, telle que ++i ou i++
  • Expression de décrémentation préfixée ou suffixée, telle que --i ou i--
  • Création d'un objet à l'aide du mot clé new
  • Expression await

La section initialiseur dans l'exemple ci-dessus déclare et initialise la variable de boucle locale i :

La section condition
La section condition, si elle est présente, doit être une expression booléenne. Cette expression est évaluée avant chaque itération de boucle. Si la section condition est absente ou que l'expression booléenne est true, l'itération suivante de la boucle est exécutée; sinon, la boucle est fermée.

La section condition dans l'exemple ci-dessus détermine si la boucle se termine en fonction de la valeur de la variable de boucle locale :

La section itérateur
La section itérateur définit ce qui se produit après chaque itération du corps de la boucle. La section itérateur contient zéro, une ou plusieurs des expressions d'instruction suivantes, séparées par des virgules :

  • Instruction d'assignation
  • Appel d'une méthode
  • Expression d'incrémentation préfixée ou suffixée, telle que ++i ou i++
  • Expression de décrémentation préfixée ou suffixée, telle que --i ou i--
  • Création d'un objet à l'aide du mot clé new
  • Expression await

La section itérateur dans l'exemple ci-dessus incrémente la variable de boucle locale :

Exemples
L'exemple suivant illustre plusieurs utilisations moins courantes des sections d'instruction for : l'attribution d'une valeur à une variable de boucle externe dans la section initialiseur, l'appel d'une méthode dans les sections initialiseur et itérateur, et la modification des valeurs de deux variables dans la section itérateur. Sélectionnez Exécuter pour exécuter l'exemple de code. Après cela, vous pouvez modifier le code et le réexécuter.

L'exemple suivant définit la boucle for infinie :


foreach, in

L'instruction foreach exécute une instruction ou un bloc d'instructions pour chaque élément d'une instance du type qui implémente l'interface System.Collections.IEnumerable ou System.Collections.Generic.IEnumerable‹T›. L'instruction foreach n'est pas limitée à ces types et peut être appliquée à une instance de n'importe quel type répondant aux conditions suivantes :

  • comporte la méthode GetEnumerator sans paramètre publique dont le retour est de type classe, struct ou interface,
  • le type de retour de la méthode GetEnumerator contient la propriété publique Current et la méthode sans paramètre publique MoveNext, dont le type de retour est Boolean.

À partir de C# 7.3, si la propriété Current de l'énumérateur retourne une valeur de retour de référence (ref TT est le type de l'élément de collection), vous pouvez déclarer la variable d'itération avec le modificateur ref ou ref readonly.

À tout moment dans le bloc d'instructions foreach, vous pouvez sortir de la boucle à l'aide de l'instruction break, ou passer à l'itération suivante de la boucle à l'aide de l'instruction continue. Vous pouvez également quitter une boucle foreach en utilisant les instructions goto, return ou throw.

L'exemple suivant montre l'utilisation de l'instruction foreach avec une instance de type List‹T› qui implémente l'interface IEnumerable‹T› :

L'exemple suivant utilise l'instruction foreach avec une instance de type System.Span‹T› qui n'implémente aucune interface :

L'exemple suivant utilise une variable d'itération ref pour définir la valeur de chaque élément dans un tableau stackalloc. La version ref readonly effectue une itération de la collection pour imprimer toutes les valeurs. La déclaration readonly utilise une déclaration de variable locale implicite. Les déclarations de variable implicite peuvent être utilisées avec les déclarations ref ou ref readonly, tout comme les déclarations de variable explicitement typée.


while

L'instruction while exécute une instruction ou un bloc d'instructions tant qu'une expression booléenne donne la valeur true. Dans la mesure où cette expression est évaluée avant chaque exécution de la boucle, une boucle while s'exécute plusieurs fois ou pas du tout. Cela diffère de la boucle do, qui s'exécute une ou plusieurs fois.

à tout moment dans le bloc d'instructions while, vous pouvez sortir de la boucle à l'aide de l'instruction break.

Vous pouvez passer directement à l'évaluation de l'expression while à l'aide de l'instruction continue. Si l'expression correspond à true, l'exécution passe à la première instruction de la boucle. Sinon, l'exécution passe à la première instruction après la boucle.

Vous pouvez également quitter une boucle while en utilisant les instructions goto, return ou throw.

L'exemple suivant illustre l'utilisation de l'instruction while.
Exemples