1.介绍
“Lambda 表达式”(lambda expression)是一个匿名函数,
Lambda 表达式基于数学中的λ演算得名,直接对应于其中的 lambda 抽象(lambda abstraction)
是一个匿名函数,即没有函数名的函数。Lambda 表达式可以表示闭包(注意和数学传统意义上的不同)。
“Lambda 表达式”将结合 Linq 来完成相关的查询工作。
2.Lambda 语法
C#的 Lambda 表达式都使用 Lambda 运算符=>,该运算符读为“goes to”。
语法如下:
形参列表=>函数体
函数体多于一条语句的可用大括号括起。
3.示例
例一:传统方式
public delegate void DelegatFun(string str);
public class Lambda
{
public void DelFun(string str)
{
Console.WriteLine("你好:" + str);
}
public void GetSay()
{
DelegatFun myDelegat = new DelegatFun(DelFun);
myDelegat("李四");
}
}
static void Main(string[] args)
{
Lambda lam = new Lambda();
lam.GetSay();
Console.ReadLine();
}
public delegate void DelegatFun(string str);
public class Lambda
{
public void GetSay()
{
DelegatFun myDelegat = new DelegatFun((x) => {
Console.WriteLine("你好:" + x);
});
myDelegat("李四");
}
}
static void Main(string[] args)
{
Lambda lam = new Lambda();
lam.GetSay();
Console.ReadLine();
}
例三:采用匿名方法、泛型委托和 Lambda 表达式
public class Lambda
{
public void GetSay()
{
new Action<string>((x) =>
{
Console.WriteLine("你好:" + x);
})("李四");
}
}
static void Main(string[] args)
{
Lambda lam = new Lambda();
lam.GetSay();
Console.ReadLine();
}
[注意]
泛型委托 Action 是不带返回参数,Func 是带返回参数。该委托是 mscorlib.dll
程序集中定义好的。