Я знаю, что оператор + = добавит метод в список вызовов, поддерживаемый базовым объектом Delegate, например
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
}
}
Но когда я смотрю MSDN Delegate, MulticastDelegate, я не могу найти определение оператора + =. Как это работает? Автоматическая генерация компилятора?