Esta é uma maneira melhor de disparar / invocar eventos sem uma verificação nula em c #?
A maioria dos códigos que vi usa o seguinte modo para declarar e invocar o acionamento de eventos:
<code>public class MyExample { public event Action MyEvent; // could be an event EventHandler<EventArgs>, too private void OnMyEvent() { var handler = this.MyEvent; // copy before access (to aviod race cond.) if (handler != null) { handler(); } } public void DoSomeThingsAndFireEvent() { // ... doing some things here OnMyEvent(); } } </code>
Até mesmo o ReSharper gera um método de chamada da maneira mencionada acima.
Por que não apenas fazer assim:
<code>public class MyExample { public event Action MyEvent = delegate {}; // init here, so it's never null public void DoSomeThingsAndFireEvent() { // ... doing some things here OnMyEvent(); // save to call directly because this can't be null } } </code>
Alguém pode explicar uma razão para não fazer isso? (pro contra)