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