C#委托的好處
先來看一個例子:
某人有三子,讓他們各自帶一樣東西出門,並帶回一頭獵物。
可以理解為一種父親對兒子的委托: 獵物 辦法(工具 某工具) 三個人執行委托的方法各不相同
兔子 打獵(工具 弓)
野雞 買(工具 錢)
狼 誘捕(工具 陷阱)
什么是委托?
委托是一個類型,用來指稱所有形式相同的方法(返回值類型相同而且參數也相同)。
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);
說白了,委托就是第三方,調用者告訴第三方要做什么,然后調用者就不用管了 這個委托(第三方)就會去調用方法去幫你實現
委托的好處: 1.相當於用方法作為另一方法參數(類似於C的函數指針)
2.在兩個不能直接調用的方法中作為橋梁,如:在多線程中的跨線程的方法調用就得用委托
3.當不知道方法具體實現什么時使用委托,如:事件中使用委托