出于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(); }} }
一图胜过千言,程序运行如下: