首页 > 代码库 > lambda表达式学习笔记(1) -- 作为委托的lambda表达式

lambda表达式学习笔记(1) -- 作为委托的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表达式学习笔记(1) -- 作为委托的lambda表达式