Провожу сейчас один эксперимент:
class Program
{
delegate void Operation();
public static void Main()
{
Operation op = DoSomething;
Update(op);
op(); \\DoSomething();
}
public static void Update(Operation op)
{
op += DoSomething2;
op += DoSomething3;
op(); \\DoSomething();, DoSomething2();,
\\DoSomething3();
}
public static void DoSomething()
{
}
public static void DoSomething2()
{
}
public static void DoSomething3()
{
}
}
Я читал Джеффри Рихбера, поэтому знаю, как устроен делегат и что он из себя представляет, когда мы его создаём, но я не понимаю, что происходит, когда мы в методе добавляем делегату методы. Не понимаю не в том смысле, что происходит в самом делегате, а не понимаю, что происходит в памяти, стеке и куче, ведь мы передали ссылку на делегат и он, по идее, должен был измениться, но не изменился. Почему? Что происходило в куче и стеке в момент выполнения метода Update?