欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#委托delegate實(shí)例解析

 更新時(shí)間:2014年08月07日 15:27:48   投稿:shichen2014  
這篇文章主要介紹了C#委托delegate實(shí)例解析,對(duì)C#的委托做了較為深入的剖析,很適合初學(xué)者學(xué)習(xí),需要的朋友可以參考下

所謂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)文章

最新評(píng)論