Erreurs courantes de parcours
Modifier une collection pendant son parcours.
Erreurs courantes de parcours est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Pièges du parcours
Les boucles sont simples, mais quelques erreurs déconcertent régulièrement les débutants.
Dans cette leçon, nous examinons les erreurs de parcours les plus courantes et la manière de les éviter.
Modifier pendant le parcours
La plus grosse erreur consiste à modifier une collection pendant que vous la parcourez avec foreach.
Ajouter ou supprimer des éléments pendant le parcours déclenche une InvalidOperationException à l'exécution.
foreach (var n in list)
{
if (n < 0) list.Remove(n); // ERROR at runtime
}La correction sûre
Pour supprimer des éléments pendant une boucle, parcourez une copie ou rassemblez d'abord les éléments, puis supprimez-les ensuite.
Parcourir list.ToList() vous fournit un instantané indépendant à parcourir.
var list = new List<int> { 1, -2, 3, -4 };
foreach (var n in list.ToList())
{
if (n < 0) list.Remove(n);
}
Console.WriteLine(string.Join(",", list));Décalage de un dans les boucles for
Dans une boucle for écrite manuellement, utiliser <= au lieu de < lit au-delà de la fin.
Les indices valides vont de 0 à Length - 1, la condition doit donc être i < Length.
for (int i = 0; i <= arr.Length; i++) // BUG: <= goes too far
{
Console.WriteLine(arr[i]);
}IndexOutOfRange
Cette erreur de décalage de un provoque une IndexOutOfRangeException.
foreach évite entièrement ce problème, car il n'utilise jamais d'indice. Préférez-le lorsque vous avez seulement besoin de lire les éléments.
string[] arr = { "a", "b", "c" };
for (int i = 0; i < arr.Length; i++) // correct: < Length
{
Console.WriteLine(arr[i]);
}S'attendre à ce que foreach modifie les éléments
Affecter une valeur à la variable de boucle ne modifie pas la collection et, pour les types valeur, cette variable n'est de toute façon qu'une copie.
Pour mettre à jour les éléments, utilisez une boucle for avec des indices.
int[] nums = { 1, 2, 3 };
for (int i = 0; i < nums.Length; i++)
{
nums[i] = nums[i] * 10;
}
Console.WriteLine(string.Join(",", nums));Collection nulle
Appeler foreach sur une référence null déclenche une NullReferenceException.
Une collection vide convient, mais null ne convient pas. Vérifiez ou initialisez la collection avant de commencer la boucle.
List<int> data = null;
if (data != null)
{
foreach (var x in data) Console.WriteLine(x);
}Confusion sur la portée des variables
La variable de boucle n'existe qu'à l'intérieur du corps de la boucle.
Essayer de l'utiliser après la boucle provoque une erreur de compilation, car elle est hors de portée une fois la boucle terminée.
foreach (var n in nums)
{
Console.WriteLine(n);
}
// Console.WriteLine(n); // ERROR: n not in scope hereOublier les accolades
Sans accolades, seule l'instruction unique suivante appartient à la boucle.
Cela peut discrètement fausser la logique. Utilisez toujours des accolades pour les corps comportant plusieurs lignes afin de rendre l'intention claire.
foreach (var n in nums)
Console.WriteLine(n);
Console.WriteLine("runs once, not per item");Risque de boucle infinie avec while
Contrairement à foreach, une boucle while peut s'exécuter indéfiniment si sa condition ne devient jamais fausse.
Assurez-vous toujours qu'une instruction dans la boucle fait évoluer l'exécution vers la condition de sortie.
int i = 0;
while (i < 3)
{
Console.WriteLine(i);
i++; // forgetting this would loop forever
}Choisir la bonne boucle
Lire chaque élément, sans avoir besoin d'un indice → foreach.
Avoir besoin de l'indice ou devoir modifier sur place → for. Répéter jusqu'à ce qu'une condition change → while.
Vérification rapide
Testez ce que vous avez appris sur les erreurs de parcours.
Récapitulatif
Vous avez appris à éviter de modifier une collection pendant foreach, les erreurs de décalage de un avec <=, les collections nulles et les confusions de portée.
Choisissez foreach pour lire, for pour modifier par indice et while pour les boucles fondées sur une condition avec une sortie claire.
Apprends C# avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 93
- Leçons
- 346
Questions Fréquemment Posées
La leçon « Erreurs courantes de parcours » est-elle gratuite ?
Oui — le texte complet de « Erreurs courantes de parcours » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Erreurs courantes de parcours » ?
Modifier une collection pendant son parcours. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Erreurs courantes de parcours » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- La boucle foreach
- Parcourir des collections
- break et continue
- Erreurs courantes de parcours