将事件设置为 null 是否会有效地分离所有目标?
public class Test
{
public delegate void SomethingHappenedEventHandler(Test obj);
public event SomethingHappenedEventHandler SomethingHappened;
private void OnSomethingHappened()
{
if (this.SomethingHappened != null)
this.SomethingHappened(this);
//Once this event is fired, do not allow any more invocations!
this.SomethingHappened = null;
}
}
不必手动分离所有事件:
public class Thing
{
priavte Test Testing { get; set; }
public Thing()
{
this.Testing = new Test();
this.Testing.SomethingHappened += DoSomething;
}
private void DoSomething(Test obj)
{
//Do some stuff.
//Detach manually.
this.Testing.SomethingHappened -= DoSomething;
}
}