一句话说明白Lambda表达式的基本知识

    xiaoxiao2025-11-11  10

    Lambda表达式就是匿名方法!

    1.匿名方法

            要谈Lambda表达式,首先要理解匿名方法。使用委托我们要在别处写一个方法,然后再绑定到委托上使用。而使用匿名委托可以不用再在别处创建方法,直接将代码段作为传递给委托:

            (1)不使用匿名方法:

    using System; namespace 委托demo控制台 { class Program { public delegate void DoWork(string str); static void Main(string[] args) { DoWork dowork = Work; dowork("Hi,I'm Wangzhengkun!"); } public static void Work(string str) { Console.WriteLine(str); Console.ReadKey(); } } }         (2)使用匿名方法:

    using System; namespace 委托demo控制台 {     class Program     {         public delegate void DoWork(string str);         static void Main(string[] args)         {             DoWork dowork = delegate (string str)              {                 Console.WriteLine(str);                 Console.ReadKey();             };             dowork("Hi,I'm Wangzhengkun!");         }     } } 实际执行的结果是一样的,使用匿名方法就不必再单独创建"Work"这个方法了,减少了代码量。

    2.Lambda表达式

            从C#3.0开始Lambda表达式代替了匿名方法。首先看Lambda表达式使用的运算符“=>”,该运算符左边指定Lambda表达式的参数右边指定代码块。

    使用Lambda表达式上面的例子就可以写成这样:

    using System; namespace 委托demo控制台 { class Program { public delegate void DoWork(string str); static void Main(string[] args) { DoWork dowork = str => { Console.WriteLine(str); Console.ReadKey(); }; dowork("Hi,I'm Wangzhengkun!"); } } }

    其中Lambda表达式就是这一部分:

    str => { Console.WriteLine(str); Console.ReadKey(); } ; str是参数,右边大括号里的是代码段。

    一个更简单的Lambda表达式:

    str=>Console.WriteLine("Hi,I'm Wangzhengkun");

    相比于匿名方法,Lambda表达式进一步缩减了代码量。

            以上都是单参数的Lambda表达式,还有多参数的:

    public delegate void DoWork(string str1,string str2); static void Main(string[] args) { DoWork dowork = (str1,str2) => { Console.WriteLine(str1+str2); Console.ReadKey(); }; dowork("Hi,", "I'm Wangzhengkun!"); }        总结一下: Lambda表达式就是匿名方法!

            关于Lambda表达式的基础就总结这么多,在我的另一篇博文“聊聊学习List<T>搜索与排序的心得”中讲到了Lambda表达式的一种实际用法。

    更深入的用法放到LINQ里说吧。

    相关资源:python入门教程(PDF版)
    最新回复(0)