我有点新手,所以遇到了这个问题。问题是:为什么会调用func2?还有一个问题。如果我向委托添加一个函数,在这个函数中调用另一个委托,但是我希望在该函数调用此委托之前调用添加到第一个委托的每个其他函数,则是否有任何清洁解决方案(我真的不太关心getInvocationList)。
class Program
{
delegate void voidEvent();
voidEvent test;
private void func1()
{
Console.Write("func1");
test -= func2;
}
private void func2()
{
Console.WriteLine("func2");
}
static void Main(string[] args)
{
Program p = new Program();
p.test += p.func1;
p.test += p.func2;
p.test();
}
}
var func = p.test; if (func != null) { func(); }
而不需要锁定任何东西的原因。因为func
是p.test
的副本,并且不关心对p.test
所做的更改。 - Olivier Jacot-Descombestest
的值的副本,而不是test
本身。 - svick