我想知道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