lambda表达式学习笔记 -- 作为委托的lambda表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lambda表达式学习笔记 -- 作为委托的lambda表达式相关的知识,希望对你有一定的参考价值。

  C#中的Lambda表达式就是C# 2中匿名方法的演变,因此从一个匿名函数开始一步步简化写法。

  例子是获取一个string参数,然后返回一个int。

  首先匿名方法的写法如下:

       Func<string, int> returnLength;
            returnLength = delegate (string text) { return text.Length; };
            Console.Write(returnLength("Hello"));

  lambda表达式最冗长的形式是:

  (显式类型的参数列表) => {语句}     (=> 可以看成是 goes to )

  上面例子lanbda表达式的写法就可以写成是:

            Func<string, int> returnLength;
            returnLength = (string text) => { return text.Length; };
            Console.Write(returnLength("Hello"));
            Console.Read();     

  这种写法和匿名方法非常相似

   除了用如上的代码块的形式来返回值,大多数时候都可以用一个表达式来表示整个主体,该表达式的值就是lambda的结果,格式就变为:

  (显式的参数列表) => 表达式

  上面的例子就变为

            Func<string, int> returnLength;
            returnLength = (string text) => text.Length;    

  由于编译器已经强大到可以很轻松的猜出参数类型,所以在这种情况下可以进一步简化为:

  (隐式类型的参数列表) =>表达式

  上面的例子就变为:

            Func<string, int> returnLength;
            returnLength = (text) => text.Length;

  到目前已经相当简短了,但是在一个参数的情况下,这个括号还有点碍眼,那就可以继续简化:

  参数名=>表达式

  例子的lambda表达式的最终形式就是:

            Func<string, int> returnLength;
            returnLength = text => text.Length;        

  

 

以上是关于lambda表达式学习笔记 -- 作为委托的lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记3.9.1 Lambda表达式 - Lambda表达式入门

Java学习笔记3.9.4 Lambda表达式 - 操作数组

C#入门详解笔记事件 泛型 委托 Lambda表达式 LINQ

C#学习之初步理解委托事件匿名方法和Lambda

part01.03 委托与 Lambda 表达式:委托

C#学习(10):委托