Argumente über Event Handler senden?

8

Ich sende also keine Argumente, sondern setze eine Klassenvariable auf einen bestimmten Wert und verwende sie dann in einer anderen Methode erneut. Ist dies die "Best Practice" -Methode? Wenn nicht, wäre ich daran interessiert, den richtigen Weg zu lernen. Vielen Dank! Können / sollten die Argumente auf andere Weise gesendet werden?

%Vor%     
sooprise 11.02.2011, 16:23
quelle

3 Antworten

10

Closures wurden in die Sprache eingeführt, um genau dieses Problem zu lösen.

Indem Sie die entsprechende Variable erfassen, können Sie Speicher angeben, der die enthaltene Methode "überlebt":

%Vor%

Beachten Sie, dass dies ein sehr komfortables Feature ist; Die Art und Weise, wie der Compiler dieses Problem für Sie löst, ist Ihrer eigenen vorhandenen Lösung verdächtig ähnlich. (Es gibt bestimmte Unterschiede, zB wird die erfasste Variable als Feld eines neu erstellten Objekts einer anderen (generierten) Klasse deklariert. Ihre vorhandene Lösung tut dies nicht: Sie haben eins "temporärer" Speicherort pro Instanz Ihrer Klasse und nicht pro Aufruf an PrintIt , was nicht gut ist - es ist nicht Thread-sicher, z Beispiel)

    
Ani 11.02.2011, 16:34
quelle
1

Nicht normalerweise, aber für diese API (WinForms-Druck) ist es der übliche Ansatz.

Beachten Sie, dass PrintThis nicht nur eine Variable ist, sondern Ihr "Modell" oder "Dokument".

    
Henk Holterman 11.02.2011 16:35
quelle
0

Alternativ können Sie die Vererbung verwenden:

%Vor%     
Skizz 11.02.2011 16:49
quelle

Tags und Links