title: += operator for Delegate
body: <p>I know that the <strong>+=</strong> operator will add a method to the invocation list maintained by the Delegate base object, for example</p>
  
  <pre><code>using System;
  
  class Program
  {
  
      delegate void MyDelegate(int n);
  
      void Foo(int n)
      {
          Console.WriteLine("n = {0}", n)
      }
  
      static void Main(string[] args)
      {
          MyDelegate d = new MyDelegate(Foo);
          d += Foo; // add Foo again
  
          d.Invoke(3); // Foo is invoked twice as Foo appears two times in invocation list
  
      }
  }
  </code></pre>
  
  <p>But when I look at MSDN <a href="https://msdn.microsoft.com/en-us/library/system.delegate(v=vs.110).aspx">Delegate</a>, <a href="https://msdn.microsoft.com/en-us/library/system.multicastdelegate(v=vs.110).aspx">MulticastDelegate</a> I can't find any definition of the <strong>+=</strong> operator. How is it that is just works? Auto-generated compiler magic?</p>