- 属于匿名方法的一种简写形式
- 和委托相结合,不用写关键字delegate
语法格式
Func<int, int, int> a = (x, y) =>
{
return x + y;
};
Console.WriteLine(a(90,90));
注意事项
- Lambda 可以访问表达式块外部的变量,但是会导致结果不仅受到参数的控制,还受到变量的控制,很容易出现问题
int b = 8;
Func<int, int> a = x => x + b;
Console.WriteLine(a(2));
b = 10;
Console.WriteLine(a(2));
- 如果Lambda表达式只有一个参数,就不需要括号括起来,否则就用括号括起来,参数之间用逗号分隔
- 系统会自动判断是=>后面的值是否要作为返回
Action<string> a = (x) => Console.WriteLine(x+"说Hello");
a("Jiexi");
- 如果Lambda表达式只有一条语句,在方法块内就不需要花括号和return语句,编译器会自动添加
Func<int, int> a = x => x + 1;
a(2);
- 否则就必须添加
- 如果没有参数,则必须使用一组空的圆括号
- 表达式的参数列表中的参数不一定需要包含类型,除非委托有ref或out参数,此时类型是必须的