Je ne ferais pas cela.
Il y a deux raisons à cela. Tout d'abord, il est normal de simplement vérifier le gestionnaire pour null
avant de l'appeler. Vous voyez cela partout, dans des exemples, dans la source de référence Microsoft et in the manuals. Deuxièmement, initialiser vos événements de cette manière alloue des objets inutiles lors de la création de votre classe. Cela mettra une pression mémoire supplémentaire sur votre application sans réel besoin. En effet:
public event EventHandler<LoadEventArgs> LoadedData = delegate { };
se traduit:
public event EventHandler<LoadEventArgs> LoadedData = new EventHandler<LoadEventArgs>delegate { });
Si vous ne le faites pas déjà, envelopper vos événements dans des méthodes spécifiques aide beaucoup:
public event EventHandler MyEvent;
protected virtual void OnMyEvent(EventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
Vous pouvez faire ce fil de sécurité (r) en utilisant ce qui suit:
public event EventHandler MyEvent;
protected virtual void OnMyEvent(EventArgs e)
{
var handler = MyEvent;
if (handler != null)
handler(this, e);
}
Pas tout le monde est trop heureux à ce sujet, pour plus de détails vérifier ici: http://stackoverflow.com/questions/9033/hidden-features-of-c/9282#9282 – gjvdkamp