title: .NET single vs. multicast delegates
body: <p>I have been reading a bit about delegates in depth, it is confusing that a delegate with one method could be different than a multicast delegate. However, via reflection, you can see plainly that even with only a single method, a delegate is indeed deriving from <code>MulticastDelegate</code>, and not <em>immediately</em> deriving from a <code>Delegate</code> object.</p>
  
  <pre><code>class Program 
  {
      public delegate void MyDelegate();
  
      static void SomeMethod()
      {
      }
  
      static void Main(string[] args)
      {
          MyDelegate del = null;
          del = new MyDelegate(SomeMethod);
          Console.WriteLine(del.GetType().BaseType.Name);            
          Console.ReadKey();
      }
  }
  </code></pre>
  
  <p>Output:<code>MulticastDelegate</code></p>
  
  <p>I realize that a <code>MulticastDelegate</code> contains an invocation list of <code>Delegate</code> objects. I am wondering if it is possible to create a single <code>Delegate</code> directly and if there would be any advantage to doing so, other than calling <code>GetInvocationList()</code> and extracting the <code>Delegate</code> objects individually.</p>