title: Why can delegates can be used interchangeably for Class methods and Static functions?
body: <p>I've been using delegates for many years, and haven't really given them much thought.
  But I recently got egg on my face by assuming that delegates stored a <code>this</code> reference when referencing a class method.
  The below example illustrates the gap in my understanding.</p>
  <pre><code>public class SomeClass
  {
      public SomeClass(int someProperty)
      {
          SomeProperty = someProperty;
      }
  
      public int SomeProperty
      { 
          get; 
          set; 
      }
  
      // Throw in a Member field into the mix
      public int ClassAdd(int x, int y)
      {
          return x + y + SomeProperty;
      }
  }
  
  public static class SomeStaticClass
  {
      public static int StaticAdd(int x, int y)
      {
          return x + y;
      }
  }
  </code></pre>
  <p>Why is it that I can add both static and instance subscribers?</p>
  <pre><code>class TestClass
  {
      delegate int myAddDelegate(int x, int y);
  
      private void UseDelegates()
      {
          myAddDelegate algorithm;
          algorithm = new SomeClass(3).ClassAdd;
          // Surprised that I could add static methods to my delegate?
          algorithm += SomeStaticClass.StaticAdd;
  
          // I'm fine with just one of the results being returned.
          int answer = algorithm(5, 10);
      }
  }
  </code></pre>
  <p>What <em>is</em> actually going on? ;)</p>