Maison > développement back-end > C++ > Pourquoi le correctif de fermeture capturée de C# 5.0 ne s'applique-t-il pas aux boucles For ?

Pourquoi le correctif de fermeture capturée de C# 5.0 ne s'applique-t-il pas aux boucles For ?

Patricia Arquette
Libérer: 2025-01-07 19:16:43
original
366 Les gens l'ont consulté

Why Doesn't C# 5.0's Captured Closure Fix Apply to For Loops?

Capture de fermeture (variables de boucle) en C# 5.0

Question :

En C# 5.0, les problèmes de capture des fermetures dans les boucles foreach ont été résolus, garantissant ainsi que les valeurs correctes des variables de boucle sont capturées. Cependant, le même problème existe toujours dans la boucle for. Pourquoi ce problème n’est-il pas résolu pour les deux types de boucles ?

Réponse :

Le comportement existant dans la boucle for est logiquement valable. Bien qu'une boucle foreach soit similaire à la déclaration d'une nouvelle variable pour chaque itération, une boucle for a une structure unique, comprenant un initialiseur, des conditions, des itérateurs et un corps.

L'initialiseur dans la boucle for n'est exécuté qu'une seule fois, il est donc logique de faire "l'instanciation de variable" une seule fois. De plus, il n'y a aucune hypothèse inhérente sur la valeur « initiale » de la variable pour chaque itération de boucle.

Considérons l'exemple suivant :

<code class="language-C#">for (int i = 0, j = 10; i < 5; i++, j--) {
    Action action = () => Console.WriteLine(i, j);
    action();
}</code>
Copier après la connexion

Dans ce cas, si vous résolvez ce problème pour une boucle for, il sera difficile de déterminer son comportement.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal