title: Is this a better way to fire/invoke events without a null check in C#?
body: <p>Most code I have seen uses the following way to declare and invoke event firing:</p>
  
  <pre><code>public class MyExample
  {
      public event Action MyEvent; // could be an event EventHandler&lt;EventArgs&gt;, 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></pre>
  
  <p>Even ReSharper generates an invoking method the way mentioned above.</p>
  
  <p>Why not just do it this way:</p>
  
  <pre><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></pre>
  
  <p>Can anyone explain a reason why not to do this? (pro vs. cons)</p>