Mögliche Duplizieren:
Is there a downside to adding an anonymous empty delegate on event declaration?Ist es OK, immer einen leeren Event-Handler hinzuzufügen?
Das folgende Muster ist durchaus üblich, wenn Event-Handler mit (in C#):
public event Action handler;
…
// some method:
if(handler != null) handler();
Gibt es irgendwelche Nachteile eines leeren Zuordnung Delegieren Sie zu dieser Veranstaltung? Dies würde den Zustand if !=null
überall dort speichern, wo das Ereignis ausgelöst wird. Dies gilt natürlich nur dann, wenn wir nicht garantieren können, dass dem Ereignis immer ein geeigneter Delegierter zugewiesen wird.
Sicher, es gibt einen leichten Leistungseinbruch, aber es macht den Code viel sauberer. Was ist die beste Vorgehensweise in einem solchen Fall? Irgendwelche technischen Nachteile?
Aus meiner Sicht ist keine gute Praxis. Ja, Sie speichern eine Nullprüfung, aber ein paar Monate später, wenn Sie den Code auf Fehler oder Wartung untersuchen, demonstriert das erste Beispiel den Zweck des Codes. – Steve
Es wird sogar noch schlimmer - ohne Schutz kann der "Handler" zwischen dem Prüfen auf Null und dem Aufrufen auf null gesetzt werden. Sie sollten den Wert von 'handler' in eine lokale Variable kopieren und _that_ für null überprüfen. –
Ihr erster Code ist fehlerhaft, da Sie den Wert von 'handler' nicht in eine lokale Variable kopieren. – CodesInChaos