出于MVVM學習的需要,復習下匿名方法和Lambda表達式,因為之前用的也比較少,所以用的也不是很熟練,Baidu下相關的知識,寫了這個Demo,目標是用簡單的方法展示這個怎么用。
這里偏重的和LINQ中的Lambda表達式?
var filesLookup = files.ToLookup(f=>f.Substring(f.LastIndexOf('.')).ToUpper());
有些不同,兩種不同的地方使用吧。
DebugLZQ把要寫的話,都寫在Demo的注釋中了,相關類似的東西網上很多,這里就不墨跡了,如下:
using System;namespace 匿名函數和Lambda表達式 {class Program{/// <summary>/// Func和Action類是特殊的類型,它們允許你在不必指定自定義委托類型的情況下,去使用委托。在整個.NET框架中都可以使用它們。/// /// Lambda表達式已經廣泛代替了匿名方法,因為它是從C# 3.0開始引入的。Lambda表達式與匿名方法有很多同樣的功能,但更便于使用。/// </summary>/// <param name="args"></param>static void Main(string[] args){//Action委托封裝不返回結果的方法。換句話說,這種委托只能用于以void關鍵字定義的那些方法。Action<int,int> funa = delegate(int x, int y) { Console.WriteLine(x+y); };//匿名方法 Action<int, int> funb = (int x, int y) => { int z = x + y; Console.WriteLine(z); };//Lambda表達式//輸出funa(3, 4);funb(3, 4);Console.ReadKey();//System.Func委托除了可以返回結果以外,它與Action委托完全相同。最簡單的Func實現沒有參數。Func<int, int, int> fun1 = delegate(int x, int y) { return x * y; };//匿名方法 Func<int, int, int> fun2 = (int x, int y) => { return x * y; };//Lambda表達式//輸出Console.WriteLine(fun1(3, 4));Console.WriteLine(fun2(3, 4));Console.ReadKey(); }} }
一圖勝過千言,程序運行如下:
?
?