標籤:拉姆達運算式 c#
我把委託理解為:委託是一種方法的格式,當然他也是一種類型。
只要是方法的格式跟委託定義的格式是一樣的,那麼就可以把該方法附加給該委託。看以下demo
聲明委託:
<p style="margin:0in;font-family:微軟雅黑;font-size:12.0pt"></p><pre name="code" class="csharp">public delegate void Add(int a,int b );
聲明一個格式相同的方法:
static void OtherMethod(int a ,int b) { Console.WriteLine(a+b); }
給類聲明一個委託類型的成員變數
public class Person { public string Name { set; get; } public string Age { set; get; } public Add MyAdd ; }
將方法附加給委託,調用,測試如下:
static voidMain(string[] args){ Person p1 =new Person (); p1.MyAdd = OtherMethod; p1.MyAdd(7, 8); Console.ReadLine();}
控制台輸出—— 15
如果我們定義的OtherMethod不常用,就沒有必要單獨聲明一個方法。可以用匿名方法,即:在給委託附加方法的時候,直接構造一個跟委託格式相同的匿名方法就可以了:
寫法如下:
p1.MyAdd = delegate(inta, int b) { Console.WriteLine(a + b); };
匿名方法,顧名思義,沒有方法名,只有方法參數和方法的演算法,可真是夠簡單了。
同樣我們也可以直接用lamuda運算式,直接構造一個方法,如下:
p1.MyAdd = (int a, int b) => {Console.WriteLine(a + b); };
匿名方法和拉姆達運算式的出現,使得寫方法變得更加簡便了。
.net基礎掃盲-小例子串委託、匿名方法、lamuda運算式