日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

理解委托(delegate)及为什么要使用委托

發布時間:2023/11/27 生活经验 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解委托(delegate)及为什么要使用委托 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

委托:是一種定義方法簽名的類型。?當實例化委托時,您可以將其實例與任何具有兼容簽名的方法相關聯。?您可以通過委托實例調用方法。

上述為官方說法,理解起來比較難,舉個生活中的例子:

某人有三子,讓他們各自帶一樣東西出門,并帶回一頭獵物。
上面一句話可以理解為父親對兒子的委托:獵物 辦法(工具 某工具)-->delegate 獵物(返回值) 帶回獵物(委托名)(工具(參數類型) x)-->delegate int GetValue(int i)
三個人執行委托的方法各不相同
兔子 打獵(工具 弓)-public static int GetValue1(int i){ return i; }
野雞 買(工具 錢)-public static int GetValue2(int i){ return i*2; }
狼 誘捕(工具 陷阱)-public static int GetValue3(int i){ return i*i; }

如何調用委托

用new關鍵字(將方法名作為參數)生成一個委托對象,建立委托與方法的關聯。

GetValue obj = new GetVlaue(Class.GetValue1);

obj(3); --> result: 3

GetValue obj = new GetVlaue(Class.GetValue2);

obj(3); --> result: 6

GetValue obj = new GetVlaue(Class.GetValue3)

obj(3); --> result: 9

通過委托調用不同的方法,將需要執行的方法作為委托的參數

我們還可以實現多路廣播委托,什么是多路廣播委托,看例子:

GetValue obj = new GetVlaue(Class.GetValue1);

obj += new GetVlaue(Class.GetValue2);

obj += new GetVlaue(Class.GetValue3);

obj(3);

多路廣播委托即:一處調用委托,所有關聯方法都會被調用。

委托的好處

1.相當于用方法作為另一方法參數(類似于C的函數指針)
2.在兩個不能直接調用的方法中作為橋梁,如:在多線程中的跨線程的方法調用就得用委托
3.當不知道方法具體實現什么時使用委托,如:事件中使用委托

?

附:.net framework中對委托進行了封裝,直接使用Func<>來代替delegate,Func<>最多有四個參數的重載。?

轉載于:https://www.cnblogs.com/zengen/archive/2011/02/06/1949518.html

總結

以上是生活随笔為你收集整理的理解委托(delegate)及为什么要使用委托的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。