title: How do static events compare to non-static events in C#?
body: <p>I just realized static events exist - and I'm curious how people use them.  I wonder how the relative comparison holds up to static vs. instance methods.  For instance, a static method is basically a global function.  But I've always associated events with <em>instances of objects</em> and I'm having trouble thinking of them at the global level.</p>
  
  <p>Here some code to refer to if it helps an explanation:</p>
  
  <pre><code>void Main()
  {
      var c1 = new C1();
      c1.E1 += () =&gt; Console.WriteLine ("E1");
      C1.E2 += () =&gt; Console.WriteLine ("E2");
      c1.F1();
  }
  
  // &lt;&lt;delegate&gt;&gt;+D()
  public delegate void D();
  
  // +&lt;&lt;event&gt;&gt;E1
  // +&lt;&lt;class&gt;&gt;&lt;&lt;event&gt;&gt;E2
  // +F()
  //      &lt;&lt;does&gt;&gt;
  //          &lt;&lt;fire&gt;&gt;E1
  //          &lt;&lt;fire&gt;&gt;E2
  public class C1
  {
      public void F1()
      {
          OnE1();
          OnE2();
      }
      public event D E1;
      private void OnE1()
      {
          if(E1 != null)
          {
              E1();
          }
      }
      static public event D E2;
      static private void OnE2()
      {
          if(E2 != null)
          {
              E2();
          }
      }
  }
  </code></pre>