Réutilisation des variables de cycle: un piège inutile foreach
Lorsque vous utilisez l'expression de lambda ou la méthode anonyme en C #, un accès à la fermeture modifié peut apparaître.
foreach
Le compilateur déclare généralement la variable de cycle à l'extérieur du corps du cycle, comme indiqué dans l'exemple de fermeture modifié:
Ceci est différent des attentes des variables déclarées dans le cycle:
string s; while (enumerator.MoveNext()) { s = enumerator.Current; ... }
L'instruction de variable externe a exacerbé le problème d'accès à la fermeture modifiée car il crée une portée plus longue pour les variables. Les variables déclarées dans le cycle <环> ne sont pas accessibles en dehors du cycle.
while (enumerator.MoveNext()) { string s; s = enumerator.Current; ... }
Le compilateur décide de réutiliser la variable circulaire avant l'introduction de l'expression de lambda et de la méthode anonyme. Par conséquent, il n'y avait aucun piège potentiel que la réutilisation variable était pleinement considérée à l'époque. foreach
Bien que cette réparation soit une amélioration populaire, lors de l'utilisation de l'ancienne version de l'ancienne version ou de ne pas soutenir cette réparation, elle doit encore faire attention à ce problème.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!