C#委托delegate實(shí)例解析
所謂c#的委托就是說(shuō)把函數(shù)當(dāng)參數(shù)來(lái)傳遞。
這個(gè)在js完全就用不著搞什么委托東西,直接轉(zhuǎn)就是了。而對(duì)于C#來(lái)說(shuō)則不是這樣!
一個(gè)函數(shù),如果它的參數(shù)是函數(shù),那么是這樣子寫的 :
public void method(Action<string, Int32> voidMethod, Func<string, Int32> returnMethod) Action<string, Int32> voidMethod
意思是說(shuō)這個(gè)將被傳進(jìn)來(lái)的函數(shù)是一個(gè)沒(méi)有return的函數(shù),就是public void, 它需要一個(gè)str參數(shù)
(這里提一下,js中每個(gè)函數(shù)都是return的即使你沒(méi)有寫,它也會(huì)return undefiend)
Func<string, Int32> returnMethod
意思是說(shuō)這個(gè)函數(shù)是一個(gè)有return的函數(shù),最后一個(gè)參數(shù)Int32代表了它的return是一個(gè)Int32 , 就是 public Int32啦, 那么除了最后一個(gè)參數(shù)其余的都是這個(gè)函數(shù)所需要的參數(shù)了
那么如何調(diào)用呢?
method(delegate(string a, string b, Int32 c) { //do something }, delegate(string a, string b) { //do something return 5; });
這里使用的是匿名函數(shù)delegate(){},這個(gè)比較習(xí)慣,因?yàn)閖s大多數(shù)會(huì)用匿名函數(shù)的。
當(dāng)然,如果你硬是喜歡用老式的寫法,也可以寫比較傳統(tǒng)的:
public void method(tuoguan voidMethod, tuoguan2 returnMethod) //這里不可以在寫 Action or Func了 { Int32 i = returnMethod("b"); voidMethod("b"); } public delegate void tuoguan(string name); public delegate Int32 tuoguan2(string name); public Int32 returnMethod(string name) { return 5; } tuoguan xx = delegate(string name) { //do somthing }; tuoguan2 yy = returnMethod; //這里可以指向某個(gè)方法,不是一定要寫 delegate method(xx, yy);
委托是很好用的,比如我對(duì)進(jìn)去的匿名函數(shù)也可以引用到作用域上的變量,這個(gè)和js是一樣的!
把它當(dāng)js來(lái)寫,我覺(jué)得這樣非常好!
相關(guān)文章
C#實(shí)現(xiàn)JSON和對(duì)象之間互相轉(zhuǎn)換功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)JSON和對(duì)象之間互相轉(zhuǎn)換功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#實(shí)現(xiàn)對(duì)象與json之間相互轉(zhuǎn)換的操作技巧,需要的朋友可以參考下2017-09-09C# WPF 建立無(wú)邊框(標(biāo)題欄)的登錄窗口的示例
這篇文章主要介紹了C# WPF 建立無(wú)邊框(標(biāo)題欄)的登錄窗口的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-12-12C#運(yùn)算符之與,或,異或及移位運(yùn)算小結(jié)
本文是對(duì)C#中的與,或,異或及移位運(yùn)算進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10Unity創(chuàng)建平鋪網(wǎng)格地圖的方法
這篇文章主要為大家詳細(xì)介紹了Unity創(chuàng)建平鋪網(wǎng)格地圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07C# winform 模擬鍵盤輸入自動(dòng)接入訪問(wèn)網(wǎng)絡(luò)的實(shí)例
本篇文章主要介紹了C# winform 模擬鍵盤輸入自動(dòng)接入訪問(wèn)網(wǎng)絡(luò),有興趣的可以了解一下。2016-11-11WPF中使用WebView2控件的方法及常見(jiàn)問(wèn)題
WebView2為WPF網(wǎng)頁(yè)瀏覽工具,具有簡(jiǎn)單易用,頁(yè)面顯示清晰的優(yōu)點(diǎn),下面這篇文章主要給大家介紹了關(guān)于WPF中使用WebView2控件的方法及常見(jiàn)問(wèn)題,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02C#使用List類實(shí)現(xiàn)動(dòng)態(tài)變長(zhǎng)數(shù)組的方法
這篇文章主要介紹了C#使用List類實(shí)現(xiàn)動(dòng)態(tài)變長(zhǎng)數(shù)組的方法,涉及C#中List類的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04