系列一講述了生活中的委托與事件的一些場景,本篇我們從C#語言的角度來闡述委托的含義。我們設想一個如下場景:中午下課鈴聲響了,你去學校食堂排隊打飯,你女朋友不想走路,讓你打包一份飯給她。下面直接上代碼:
Main( BringLunchEventHandler lunchDelegate = +=
女朋友讓你去帶飯,她只是相當於下了一個指令,你按照她的意思去做就行了。而她告訴你買什麼、買多少、去哪裡買,這個相當於指定一個方法的簽名,不知道這樣大家能否比較好的理解。
BringLunchEventHandler();
上面語句即聲明了一個委托,委托和方法實際上很相似:相比方法,委托多了一個delegate關鍵字,沒有方法體<這也為什麼說委托是一個命令,它什麼也不做>。
lunchDelegate += Girlfriend.TakeCandy;
女朋友讓你去帶飯,也可以讓你買糖,也可以是其它什麼。C#中,通過+=運算符則可實現委托鏈-即把多個方法綁定到委托,
當委托被調用時,其綁定的方法均會依次執行。聰明的你應該想到,-=運算符即是取消某個方法的綁定。
附加:委托是一種指向方法的類型,類似於C++中的函數指針,代表一個函數的地址。如int是一種類型,2、3、4等均是此類型的值;同理,委托也是一種類型,TakeLunch()、DoSomething(int count,String message)均是此類型的值,所以委托類型代表的是一個方法。
上面就是我對委托的理解,如有錯誤之處,歡迎大家指正!下一篇將以同樣的方式講解事件和委托的關系!