Commençons par l'extrait suivant:Modification de l'article dans le foreach à travers la méthode
Foreach(Record item in RecordList){
..
item = UpdateRecord(item, 5);
..
}
La fonction UpdateRecode change certains champs de l'élément et renvoie l'objet modifié. Dans ce cas, le compilateur lève une exception indiquant que l'élément ne peut pas être mis à jour dans une itération foreach.
Maintenant, la méthode UpdateRecord est modifiée de sorte qu'elle retourne vide et l'extrait ressemblerait à ceci:
Foreach(Record item in RecordList){
..
UpdateRecord(item, 5);
..
}
Dans ce cas, l'élément sera mis à jour car enregistrement est un type de référence. Mais cela rend le code illisible.
Le projet sur lequel je travaille a beaucoup de boucles foreach avec presque le même code encore et encore, donc je voudrais créer des méthodes qui mettent à jour certaines parties des enregistrements. Y a-t-il une bonne façon de faire ça? Un qui rend le code plus lisible au lieu de le jeter encore plus loin?
Merci, je pense que c'est la seule bonne façon d'aller dans ma situation. – Sorskoot
Il n'y a absolument rien de mal à utiliser un modèle d'itérateur pour mettre à jour les éléments d'une collection. Vous ne voulez pas ajouter ou supprimer des éléments de la collection pendant l'itération, et c'est ce dont se plaint le compilateur. –