Problem mit anderem "Ausführungskontext" einer anonymen Methode innerhalb einer Schleife

8

Ich habe ein Problem mit einer anonymen Methode innerhalb einer Schleife.

Der folgende Code soll nur mein Problem veranschaulichen:

%Vor%

Und wenn ich auf die Schaltfläche klicke, lautet die Ausgabe:

  

Victor Wooten
  Victor Wooten
  Victor Wooten
  Victor Wooten

anstelle von:

  Jaco Pastorius   Marcus Miller   Flea   Vicor Wooten

Der Hauptpunkt meines Problems ist der unterschiedliche Ausführungskontext. Ich weiß, dass mein Beispiel dumm ist.

    
Florian 10.12.2010, 13:59
quelle

3 Antworten

12

Dies ist das Problem der erfassten Variablen. Beheben Sie es, indem Sie

ändern %Vor%

bis

%Vor%

Hier ist eine Erläuterung des Problems: Schleifenvariable, die als schädlich angesehen wird . Indem wir die lokale Variable currentItem in den Gültigkeitsbereich der Schleife setzen und darüber schließen, erfassen wir nun diese Variable anstelle der Schleifenvariablen.

    
jason 10.12.2010, 14:01
quelle
0

Ihr Problem ist, dass Sie neue Handler in der Schleife erstellen, das ist unnötig und gefährlich.

Sie erstellen auch eine anonyme Methode, bei der der Wert in der Schleife fest codiert ist. Das ist schlimmer.

    
Aliostad 10.12.2010 14:01
quelle
0

In allen Fällen ist Jasons Antwort richtig. Es ist ein Problem der variablen Erfassung. Dies wird hauptsächlich in zwei Situationen Threading und anonyme Methoden auftreten

    
Elangesh 10.12.2010 14:12
quelle

Tags und Links