1. 程式人生 > >委託事件(未完待續...)

委託事件(未完待續...)

先來看一個例子:
某人有三子,讓他們各自帶一樣東西出門,並帶回一頭獵物。
可以理解為一種父親對兒子的委託:
獵物  辦法(工具 某工具)
三個人執行委託的方法各不相同
兔子 打獵(工具 弓)
野雞 買(工具 錢)
狼 誘捕(工具 陷阱)
什麼是委託?
委託是一個型別,用來指稱所有形式相同的方法(返回值型別相同而且引數也相同)。
public delegate double Handler(double[] ds);
public double Sum(double[] ds) {//在方法中執行操作。}
public double Average(double[] ds) {//在方法中執行操作。}
委託的例項化
用new關鍵字(將方法名作為引數)生成一個委託物件,建立委託與方法的關聯。
例:
Handler handler = new Handler(Sum);
使用委託
可以像使用變數一樣使用委託的例項。使用委託時,需要給委託按要求傳遞引數。
使用委託,則委託所關聯的方法被呼叫。
例:
double[] weights={1.0,2.0,3.0,4.0}; 
double result=handler(weights); 
一個委託可以通過+運算委託關聯多個方法,叫多路廣播委託(對應於單路廣播委託)。
如果此時使用委託,則所有的關聯方法都被呼叫。
例: 
Handler handler = new Handler(Sum);
handler += new Handler(Average);