Heim > Backend-Entwicklung > C++ > Warum erfassen C# Loop -Aktionen dieselbe Variable und wie kann dies vermieden werden?

Warum erfassen C# Loop -Aktionen dieselbe Variable und wie kann dies vermieden werden?

Mary-Kate Olsen
Freigeben: 2025-02-03 07:44:16
Original
579 Leute haben es durchsucht

Why Do C# Loop Actions Capture the Same Variable, and How Can This Be Avoided?

Die Variablen in der Zykluserfassung

In C#achten Sie beim Definieren der Operation im Zyklus unbedingt auf das Verhalten der variablen Erfassung. Standardmäßig erfassen alle Vorgänge dieselbe Variable, wodurch die Ausgabeergebnisse bei der Aufruf nicht den Erwartungen entsprechen.

Bitte betrachten Sie das folgende Beispiel:

Die erwartete Ausgabe dieses Codes beträgt 0, 2, 4, 6 und 8. Die tatsächliche Ausgabe beträgt jedoch fünf 10. Dies liegt daran, dass alle Operationen dieselbe erfasste Variable
<code class="language-csharp">List<Action> actions = new List<Action>();

int variable = 0;
while (variable < 5)
{
    actions.Add(() => Console.WriteLine(variable * 2));
    ++variable;
}

foreach (var act in actions)
{
    act.Invoke();
}</code>
Nach dem Login kopieren
zitieren, was im Zyklus aktualisiert wird. Bei der Anrufung haben alle Operationen den gleichen Wert 10.

variable Um dieses Problem zu vermeiden und sicherzustellen, dass jede Operationsinstanz eine eigene Erfassungsvariable hat, müssen Sie die Variable im Zyklus kopieren:

Durch die lokale Kopie der Variablen erfasst jeder Operation seinen eigenen eindeutigen Wert, um die erwartete Ausgabe 0, 2, 4, 6, 8 zu erhalten.
<code class="language-csharp">while (variable < 5)
{
    int copy = variable;
    actions.Add(() => Console.WriteLine(copy * 2));
    ++variable;
}</code>
Nach dem Login kopieren

Das Konzept dieser variablen Erfassung ist entscheidend, um den Verschluss von C#zu verstehen. Berücksichtigen Sie beim Definieren von Operationen innerhalb des Zyklus den Lebenszyklus der Variablen und ihrer Zugänglichkeit.

Das obige ist der detaillierte Inhalt vonWarum erfassen C# Loop -Aktionen dieselbe Variable und wie kann dies vermieden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage