1. 程式人生 > >Event and Delegate

Event and Delegate

private tps pre += som function fun 編譯 委托

文章著作權歸作者所有。轉載請聯系作者,並在文中註明出處,給出原文鏈接。
本文原更新於作者的github博客,這裏給出鏈接。

委托

委托的實質是一個類。

// 委托定義
delegate ReturnType DelegateName([parameters]);
// 委托聲明
DelegateName delegateInstance = new DelegateName();
// 委托賦值
delegateInstance = delegateFunctionName1;
// 綁定/解綁委托
delegateInstance += delegateFunctionName2;
delegateInstance -= delegateFunctionName1;

事件

事件是封裝了委托的類。

當事件被聲明為類的內部成員時,它總會被編譯為private類型,即無法使用=賦初值,只有+=和-=操作。

delegate ReturnType DelegateName([parameters]);
// 事件聲明
event DelegateName eventName;
// 添加/刪除事件
eventName += event1;
eventName -= event2;

事件委托與匿名方法、lambda表達式

delegate ReturnType DelegateName([parameters]);
// 匿名方法
DelegateName delegateInstance = delegate([parameters]){ return something; };
// lambda表達式
DelegateName delegateInstance = ([parameters]) => { return something; };
DelegateName delegateInstance = ([parameters]) => { return something; };
DelegateName delegateInstance =   parameter    => { return something; };
DelegateName delegateInstance =   parameters   =>          something   ;

應用

Observer Pattern(觀察者模式)

Event and Delegate