Übergabe zusätzlicher Daten an C#-Ereignishandler
Ereignishandler sind in C# für die Reaktion auf Ereignisse von entscheidender Bedeutung. Allerdings stellt die Standard-Event-Handler-Signatur oft nur das sender
-Objekt bereit. Dies schränkt die Möglichkeit ein, zusätzlichen Kontext zu übergeben. Lassen Sie uns eine Lösung finden:
Stellen Sie sich dieses Szenario vor:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); // Only sender is passed } public void evHandler(Object sender) { // someData is inaccessible here }</code>
someData
wird innerhalb von evHandler
benötigt, aber der Standardereignismechanismus lässt seine direkte Einbindung nicht zu.
Die Lambda-Ausdruckslösung
Die Lösung liegt in der Verwendung eines Lambda-Ausdrucks beim Zuweisen des Event-Handlers:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); // Lambda expression to pass additional data } public void evHandler(Object sender, string someData) { // Now someData is accessible! }</code>
Der Lambda-Ausdruck (sender) => evHandler(sender, someData)
erstellt eine anonyme Methode. Diese Methode empfängt das sender
-Objekt vom Ereignis und ruft dann evHandler
auf, wobei sowohl sender
als auch someData
übergeben werden. Dadurch können Sie effektiv zusätzliche Parameter in Ihren Event-Handler einfügen. Dieser Ansatz bietet mehr Flexibilität und Kontrolle über die Daten, die an Ihre Ereignisverarbeitungslogik übergeben werden.
Das obige ist der detaillierte Inhalt vonWie kann ich zusätzliche Parameter an einen Event-Handler in C# übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!