effektiv abgemeldet anonyme Ereignishandler in C#
c# Ereignisse ermöglichen eine dynamische Ereignisbehandlung durch das Hinzufügen von Ereignishandler (Methoden). Anonyme Methoden, die unter Verwendung von Lambda -Ausdrücken oder Delegiertenausdrücken definiert sind, bieten eine prägnante Möglichkeit, diese Handler direkt im Ereignisabonnement zu erstellen. Das Entfernen dieser anonymen Handler erfordert jedoch einen bestimmten Ansatz.
Anonyme Methode Ereignishandler
verstehenAnonyme Methoden sind Inline -Codeblöcke; Im Gegensatz zu benannten Methoden fehlt ihnen eine formelle Erklärung. Dies macht die Abmeldung schwieriger, da sie keinen leicht identifizierbaren Namen haben.
Abonnieren mit anonymen Methoden: Ein einfaches Beispiel
abonnieren ist einfach:
<code class="language-csharp">MyEvent += delegate { Console.WriteLine("Event triggered!"); };</code>
Die vorläufige Herausforderung und Lösung
Der Schlüssel zum Abmeldungen besteht darin, einen Verweis auf die anonyme Methode zu speichern, bevor Sie sie an das Ereignis anfügen:
<code class="language-csharp">Action myEventHandler = delegate { Console.WriteLine("Event triggered!"); }; MyEvent += myEventHandler;</code>
Jetzt wird uns nicht eingestellt:
<code class="language-csharp">MyEvent -= myEventHandler;</code>
Wenn wir den anonymen Delegierten in einer Variablen halten (myEventHandler
), behalten wir einen Zeiger auf und ermöglichen die Entfernung von der Handlerliste des Ereignisses. Dies gewährleistet das ordnungsgemäße Ereignismanagement bei der Verwendung anonymer Methoden. Diese Technik ermöglicht eine flexible und saubere Ereignisbehandlung mit anonymen Methoden und vermeidet die Komplikationen von unsubschreibenden namenlosen Handlern.
Das obige ist der detaillierte Inhalt vonWie kann ich anonyme Methoden von Ereignissen in C# abbestellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!