using System; static class Program { static event Action A = delegate { }; static event Action B = delegate { }; static void Main() { A += B; B += ()=>Console.WriteLine("yeah"); A.Invoke(); } }
Это ничего не печатает, но если я поменяю местами первые две строки Main, это произойдет.
События являются неизменяемыми, т.е. вы получаете копию при назначении, как целые числа
int a = 1; int b = 2; a += b; // a == 3 b += 1; // a is still 3
A + = B; добавляет список делегатов из B в A. Это копирование содержимого B, а не ссылка на B.
Это так же, как:
A = (Action)System.Delegate.Combine(A, B);
Так что порядок определенно важен.