C# Academy · Leçon

Erreurs courantes de parcours

Modifier une collection pendant son parcours.

Leçon 4 sur 413 étapes

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 here

Oublier 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.

Gratuit pour commencer

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

  1. La boucle foreach
  2. Parcourir des collections
  3. break et continue
  4. Erreurs courantes de parcours
← Retour à C# Academy