foreach
string[] plants = { "leaf", "mint" }; range deux mots. Puis foreach (string plant in plants) remet chaque mot au nom plant, et Console.WriteLine(plant) l'écrit. L'écran montre deux lignes : leaf, puis mint. Vous n'écrivez pas de compteur d'index sur cette page. Gardez la classe publique nommée Pine.
Un nom pour chaque valeur du tableau
Ouvrez le fichier Pine. Le nom de la classe reste Pine. Cette page ne renomme pas le type. Supprimez tout for avec break ou continue si cette forme est encore là. Supprimez un for compté for (int i = 1; i <= 5; i = i + 1) s'il est encore là. Supprimez toute ligne ReadLine. Le fichier que vous gardez n'attend pas de saisie, n'a pas de break anticipé, et n'a pas de compteur d'index. L'écran n'est écrit que par la ligne d'écriture à l'intérieur des accolades du foreach.
Dans Main, rangez d'abord le tableau : string[] plants = { "leaf", "mint" };. Cette ligne n'écrit pas l'écran. Elle garde seulement deux mots sous le nom plants. Puis la boucle :
foreach (string plant in plants) {
Console.WriteLine(plant);
}
Le mot foreach est en minuscules, écrit en un seul mot. Dans les parenthèses se trouvent le type d'élément string, le nom plant pour un élément, le mot in, puis le nom du tableau plants. Ce in n'est ni un chemin ni une étiquette de case. Il marque « chaque valeur de plants entre dans plant. » Les accolades tiennent le corps. Console.WriteLine(plant); écrit le mot courant sans guillemets autour de plant. Enregistrez le fichier.
Le fichier que vous gardez
Gardez cette forme d'enseignement. Un string[] nommé plants qui tient leaf puis mint. Un foreach avec string plant in plants. Une ligne d'écriture qui écrit le nom nu plant. Il n'y a pas d'index i, pas de break, et pas de guillemets autour de plant.
using System;
public class Pine
{
public static void Main()
{
string[] plants = { "leaf", "mint" };
foreach (string plant in plants)
{
Console.WriteLine(plant);
}
}
}
Lisez depuis le haut. using System; prépare les noms courts. public class Pine nomme le type. public static void Main() est l'endroit où l'exécution démarre. string[] plants = { "leaf", "mint" }; range deux mots. foreach (string plant in plants) les parcourt. Console.WriteLine(plant); écrit chaque mot. Deux lignes à l'écran : leaf, puis mint.
Exécutez avec dotnet run. Le programme écrit deux lignes et s'arrête. Il n'attend pas que vous tapiez. Si dotnet run attend, ReadLine est encore dans le fichier. Supprimez cette ligne et gardez le tableau plus le foreach ci-dessus. L'écran montre leaf, puis mint. Si l'écran ne montre que leaf, vous êtes peut-être encore sur la page des tableaux qui écrit plants[0] une seule fois. Remplacez cela par foreach. Si l'écran montre les lettres plant à chaque ligne, la ligne d'écriture a des guillemets : Console.WriteLine("plant");. Si l'écran montre foreach en lettres, une ligne d'écriture a des guillemets autour de ce mot. Vous ne réinstallez pas le kit SDK .NET pour un écran qui montre les mauvaises lignes.
Parcourez une exécution complète dans l'ordre. plants tient leaf, puis mint. Le premier passage place plant à leaf et la ligne d'écriture écrit leaf. Le second passage place plant à mint et écrit mint. Ensuite il n'y a plus de valeurs, donc la boucle se termine. Vous n'avez pas écrit int i = 0 ni i < plants.Length sur cette page. L'en-tête foreach demande à C# de visiter chaque valeur rangée une fois. Le nom plant est déclaré une fois dans l'en-tête comme string plant.
Parcourir un tableau int de la même façon
Changez le tableau rangé et le type d'élément pour que chaque valeur soit un nombre entier. Utilisez int[] slots = { 2, 4, 6 }; et foreach (int n in slots) avec Console.WriteLine(n); dans le corps. Maintenant l'écran doit montrer trois lignes : 2, puis 4, puis 6. Le mot in se place encore entre le nom d'élément et le nom du tableau. Le corps écrit encore le nom qui tient un élément.
using System;
public class Pine
{
public static void Main()
{
int[] slots = { 2, 4, 6 };
foreach (int n in slots)
{
Console.WriteLine(n);
}
}
}
C'est le second fichier. Ce n'est pas le fichier que vous gardez. Exécutez dotnet run. L'écran montre trois lignes. Vous avez remplacé le tableau string par un tableau int et fait correspondre le type du nom d'élément à int. Après avoir vu 2, 4 et 6, remettez le fichier gardé : plants avec foreach (string plant in plants). Les deux versions sont du C# valide. Elles enseignent la même forme foreach avec des genres d'éléments différents.
Relisez l'exécution int une fois encore. slots tient 2, puis 4, puis 6. Le premier passage place n à 2 et l'écrit. Le second passage place n à 4 et l'écrit. Le troisième passage place n à 6 et l'écrit. Puis la boucle se termine. Aucun guillemet n'entoure les nombres dans les accolades du tableau. Console.WriteLine(n) sans guillemets autour de n écrit ces nombres rangés à l'écran.
Règles qui gardent foreach clair
Les parenthèses doivent tenir type, nom, in, et nom du tableau dans cet ordre. Écrire foreach (string plant plants) sans in fait écrire une erreur au build. Le type d'élément doit correspondre au tableau : string avec un tableau string, int avec un tableau int. Placer string plant à côté d'un tableau int[] n'est pas la forme que cette leçon construit. Les accolades tiennent encore le corps quand le corps a une ou plusieurs lignes.
foreach n'est pas le for compté de la page précédente, et ce n'est pas break de la page d'avant. Le for compté écrivait départ, test et pas avec un compteur. foreach parcourt des valeurs déjà rangées dans un tableau. break termine une boucle plus tôt ; la première démo de cette page écrit chaque valeur. Ne laissez pas une démo break ni un while simple dans le même Main en vous demandant pourquoi l'écran montre 1 et 2 au lieu de leaf et mint. Le Main de cette session ne doit tenir que le tableau et le foreach.
Une confusion fréquente est d'écrire la syntaxe elle-même : Console.WriteLine("foreach");. Cela écrit les caractères foreach. Cela ne parcourt pas le tableau. Une autre confusion est Console.WriteLine("plant"); avec guillemets, qui écrit le mot lettre plant à chaque passage au lieu de leaf et mint. Gardez Console.WriteLine(plant) sans guillemets quand vous voulez la valeur d'élément à l'écran.
Si le tableau n'a aucun élément — par exemple string[] plants = { }; — le corps ne s'exécute jamais et l'écran reste vide. C'est encore un foreach valide ; les démos de cette leçon gardent au moins deux valeurs pour que vous voyiez les lignes écrites. Quand vous aurez plus tard besoin d'un numéro d'index à l'écran, le for compté revient ; foreach sert à visiter les valeurs sans gérer cet index vous-même. Changer une valeur dans la boucle avec plant = "stem"; ne réécrit pas la case du tableau sur cette forme débutant — traitez plant comme la valeur que vous lisez pour écrire, pas comme un outil pour modifier plants.
Vous pouvez maintenant ranger un tableau, écrire foreach (Type name in arrayName), et écrire chaque valeur une fois. Faire correspondre le type d'élément au tableau garde la boucle qui se construit. La page suivante porte sur les methods, où vous regroupez des lignes sous un nom que vous pouvez appeler depuis Main.
L'écran est chaque valeur du tableau
Le fichier que vous gardez écrit leaf, puis mint. Le nom plant est dans la ligne d'écriture, et les lettres plant ne sont pas à l'écran comme étiquette. Le mot in est dans les parenthèses, et in n'est pas à l'écran. Des guillemets autour de plant ou autour de foreach écrivent des lettres, pas le parcours du tableau.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut