C#拜托delegate實例解析。本站提示廣大學習愛好者:(C#拜托delegate實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#拜托delegate實例解析正文
所謂c#的拜托就是說把函數當參數來傳遞。
這個在js完整就用不著弄甚麼拜托器械,直接轉就是了。而關於C#來講則不是如許!
一個函數,假如它的參數是函數,那末是如許子寫的 :
public void method(Action<string, Int32> voidMethod, Func<string, Int32> returnMethod) Action<string, Int32> voidMethod
意思是說這個將被傳出去的函數是一個沒有return的函數,就是public void, 它須要一個str參數
(這裡提一下,js中每一個函數都是return的即便你沒有寫,它也會return undefiend)
Func<string, Int32> returnMethod
意思是說這個函數是一個有return的函數,最初一個參數Int32代表了它的return是一個Int32 , 就是 public Int32啦, 那末除最初一個參數其他的都是這個函數所須要的參數了
那末若何挪用呢?
method(delegate(string a, string b, Int32 c) { //do something }, delegate(string a, string b) { //do something return 5; });
這裡應用的是匿名函數delegate(){},這個比擬習氣,由於js年夜多半會用匿名函數的。
固然,假如你硬是愛好用老式的寫法,也能夠寫比擬傳統的:
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);
拜托是很好用的,好比我對出來的匿名函數也能夠援用到感化域上的變量,這個和js是一樣的!
把它當js來寫,我認為如許異常好!