Leere anonyme Delegaten in Ereignisdeklarationen: Mögliche Nachteile
Bei der Ereignisprogrammierung ist es üblich, einen leeren anonymen Delegaten direkt zur Ereignisdeklaration hinzuzufügen , wie unten zu sehen ist, vereinfacht das Auslösen von Ereignissen, indem die Notwendigkeit von Nullprüfungen entfällt:
// Deliberately empty subscriber public event EventHandler AskQuestion = delegate {};
Während dieser Technik Wenn ein bestimmtes Problem gelöst wird, müssen mögliche Nachteile unbedingt berücksichtigt werden:
Anstatt sich auf leere Delegaten zu verlassen, besteht ein alternativer Ansatz darin, eine Erweiterungsmethode zu nutzen, die Nullprüfungen durchführt und das Auslösen von Ereignissen vereinfacht:
public static void Raise(this EventHandler handler, object sender, EventArgs e) { if(handler != null) { handler(sender, e); } }
Mit dieser Erweiterung wird das Auslösen von Ereignissen müheloser und die Nullprüfung wird reduziert Overhead:
// Works, even for null events. MyButtonClick.Raise(this, EventArgs.Empty);
Diese erweiterungsbasierte Lösung beseitigt sowohl die Leistungs- als auch Wartungsnachteile, die mit anonymen leeren Delegaten in Ereignisdeklarationen verbunden sind.
Das obige ist der detaillierte Inhalt vonSollten Sie in Ereignisdeklarationen leere anonyme Delegaten verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!