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的前两行,它就会。
答案 0 :(得分:5)
事件是不可变的,即在分配时获得副本,如整数
int a = 1;
int b = 2;
a += b; // a == 3
b += 1; // a is still 3
答案 1 :(得分:2)
A + = B;将B的代表列表附加到A. 它正在复制B的内容,而不是对B的引用。
与以下内容相同:
A = (Action)System.Delegate.Combine(A, B);
所以顺序绝对重要。