Heim > Backend-Entwicklung > C++ > Sollten Sie in Ereignisdeklarationen leere anonyme Delegaten verwenden?

Sollten Sie in Ereignisdeklarationen leere anonyme Delegaten verwenden?

Barbara Streisand
Freigeben: 2024-12-29 16:10:12
Original
199 Leute haben es durchsucht

Should You Use Empty Anonymous Delegates in Event Declarations?

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 {};
Nach dem Login kopieren

Während dieser Technik Wenn ein bestimmtes Problem gelöst wird, müssen mögliche Nachteile unbedingt berücksichtigt werden:

  1. Auswirkungen auf die Leistung: Das Aufrufen des leeren Delegate-Abonnenten für jeden Ereignisaufruf kann zu einem vernachlässigbaren Leistungsaufwand führen. In Hochfrequenzszenarien könnte sich dies ansammeln.
  2. Wartungsaufwand: Auch wenn die Absicht des leeren Delegaten zunächst klar sein mag, ist sie mit der Zeit möglicherweise nicht selbsterklärend. Dies könnte zu Wartungsproblemen für Entwickler führen, die mit dem Muster nicht vertraut sind.

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);
    }
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage