2014年5月11日 星期日

[c#] =>是甚麼鬼東西啦!!!! ( Lambda 運算式 )


From: http://www.dotblogs.com.tw/smartleos/archive/2013/01/08/86999.aspx




其實就是把 delegate 關鍵字省略成 「=>」運算子而已。

  //匿名委派的寫法
25  白宮.整理書房(delegate(Master 主人, Location 地點) {
26                        return 主人.Name + " 的 " + 地點.Name + "書房整理好了。";}
27                    );
28  //Lambda 運算式的寫法 2
29  白宮.整理書房((主人, 地點) => {
30                        return 主人.Name + " 的 " + 地點.Name + "書房整理好了。";}
31                    );


常見的有下面四種寫法:
1(int x, string s) => s.Length > x;  //明確指定傳入參數的型別,適用在無法型別推斷的時候。
2(a, b) => a + b;  //讓編譯器使用型別推斷省去撰寫傳入參數型別的寫法。
3a => a * a; //只有一個傳入參數時,可以省略圓括號。
4() => "L" "I" "N" "Q"//沒有傳入參數時,必須用空的圓括號。



在 LINQ 中,大多方法都提供 Func 的傳入參數,也就是都可以透過匿名委派傳入自定義的邏輯,例如:從一個數列中取奇數
1int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
2int oddNumbers = numbers.Count(n => n % 2 == 1);





這篇的觀念很詳細
 http://www.dotblogs.com.tw/hatelove/archive/2012/06/07/csharp-linq-lambda-introduction.aspx


01//第1種例子
02(x, y) => x == y
03 
04//第2種例子
05x => x + 1
06 
07//第3種例子
08() => DoSomething()
09 
10//第4種例子
11x => { x++; Console.WriteLine(x); return x; }














0 意見:

張貼留言

 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template