我想知道C#如何解释那段代码。循环委托代码
public delegate void ChangeStateHandler(object sender, EventArgs e);
public event ChangeStateHandler ChangeStateEvent = delegate { };
protected void OnChangeState(EventArgs e) {
ChangeStateHandler ev = ChangeStateEvent;
ev(this, e); // <<<<< that LINE
}
我知道这是部分翻译成:
private EventHandlerList events = new EventHandlerList();
private Object myeventObject = new object();
public event EventHandler<EventArgs> myevent
{
add { events.AddHandler(myeventObject, value); }
remove { events.RemoveHandler(myeventObject, value); }
}
在 “现实” EV(这一点,E)怎么翻译? 我想是这样的:
ChangeStateHandler ev = ChangeStateEvent;
foreach (myHandler in ev) {
myHandler(this, e);
}
但是,如何一个单一的功能(EV)可以生成一个循环?以及如何实现类似的东西?
干杯
你基本上是问:“什么是魔法由[多路广播委托(http://msdn.microsoft.com /en-us/library/ms173175.aspx)可以调用连接到它们的多个处理程序?“编辑:我怎么能推出我自己的多播委托或模仿类似的行为? –
很难理解你要求什么。如果你想知道生成的CIL会怎么样,请使用反编译器。 – Tarec
@Chris:正好! – Kaiser69