Ich traf ein interessantes Thema über C#. Ich habe Code wie unten.Captured Variable in einer Schleife in C#
Ich erwarte, dass es 0, 2, 4, 6, 8 ausgibt. Jedoch gibt es tatsächlich fünf 10s aus.
Es scheint, dass dies auf alle Aktionen zurückzuführen ist, die sich auf eine erfasste Variable beziehen. Wenn sie aufgerufen werden, haben sie alle dieselbe Ausgabe.
Gibt es eine Möglichkeit, dieses Limit zu umgehen, damit jede Action-Instanz eine eigene erfasste Variable hat?
Siehe auch Eric Lipperts Blog-Serie zum Thema: [Schließen der Loop-Variable als schädlich] (http://blogs.msdn.com/b/ericlippert/archive/tags/closures/) – Brian
Auch sie ändern sich C# 5, um so zu arbeiten, wie du es innerhalb einer foreach erwartest. (Breaking Change) –
Related: [Warum-ist-es-schlecht-zu-verwenden-eine-Iteration-Variable-in-einem Lambda-Ausdruck] (http://stackoverflow.com/questions/227820/why-is -it-bad-to-use-iteration-variable-in-a-lambda-expression) – nawfal