C# lambda 表达式

lambda函数是一个小的匿名函数。lambda函数可以接受任意数量的参数,但只能具有一个表达式。本文主要介绍C# lambda表达式。

1、C# lambda表达式

"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。可以将此表达式分配给委托类型。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
   delegate int Calc(int i);  
    class Program
    {
        static void Main(string[] args)
        {
         Calc myDelegate = x => x * x+100;  
         int j = myDelegate(5); 
         Console.WriteLine(j);
        }
    }
}

注意:

Lambda表达式Lambda表达式是由.NET 2.0演化而来的,也是LINQ的基础,熟练地掌握Lambda表达式能够快速地上手LINQ应用开发。

Lambda表达式在一定程度上就是匿名方法的另一种表现形式。

2、语法

简单的lambda表达式包含一个参数和一个表达式:

parameter => expression

要使用多个参数,需要将其括在括号中:

(parameter1, parameter2) -> expression

表达式是有限的。它们必须立即返回一个值,并且不能包含 变量,赋值或语句,例如,if或for。为了执行更复杂的操作,可以将代码块与花括号一起使用。如果lambda表达式需要返回一个值,则代码块需要有return语句返回值。

(parameter1, parameter2) -> { 代码 }

3、使用lambda表达式

lambda表达式通常作为参数传递给函数:

例如:

List<string>ForEach方法中,使用lamba表达式可打印输出列表中的每个元素:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
   delegate int Calc(int i);  
    class Program
    {
        static void Main(string[] args)
        {
          var colNames = new List<string> { "colE", "colL", "colO", "colN" };   
          colNames.ForEach((x) => Console.WriteLine(x));
        }
    }
}

要在方法中使用lambda表达式,该方法应具有一个带有单方法委托类型的参数。 调用接口的方法将运行lambda表达式:

例如,

创建一个将lambda表达式作为参数的方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
   delegate int Calc(int i);  
    class Program
    {
        public static int GetResult(Calc c,int i)
        {
          return c(i);
        }
        static void Main(string[] args)
        {
         Console.WriteLine(GetResult(x=>x*3+20,10));
        }
    }
}

推荐阅读
cjavapy编程之路首页