匿名方法和Lambda表达式

出于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();            

        }

    }

}

一图胜过千言,程序运行如下:

匿名方法和Lambda表达式

 

 

你可能感兴趣的:(lambda)