Lambda表达式
自c#3.0开始,就可以使用一种新语法把实现代码赋予委托:Lambda表达式。只要有委托参数类型的地方,就可以使用Lambda表达式。Lambda运算符“=>”的左边列出了需要的参数,Lambda运算符的右边定义了赋予Lambda变量的方法的实现代码。
参数
Func<String, String> one = s => string.Format("change uppercase {0}",s.ToUpper());
Console.WriteLine(one("test"));
如果委托使用多个参数就把参数放在花括号中。
Func<double, double, double> two = (x, y) => x * y;
Console.WriteLine(two(9,99));
为了方便,可以在花括号中给变量名添加参数类型。
Func<double, double, double> twoWithTypes = (double x, double y) => x * y;
Console.WriteLine(twoWithTypes(9, 969));
多行代码
如果Lambda表达式只有一条语句,在方法块内就不需要花括号和return语句,因为编译器会添加一条隐式的return语句。
Func<string, string> lambda = (string param) => {
param = "this is a good";
param += " and this was added to the string";
return param;
};
闭包
通过Lambda表达式可以访问Lambda表达式块外部的变量。这称为闭包
int some=8;
Func<int,int> f=x=>x+some;
如下展示的是c#5.0版本中编译后的结果为10,20,30,40。若使用4.0之前的版本结果输出为40四次。
var values = new List<int>() { 10,20,30,40};
var funcs = new List<Func<int>>();
foreach (var item in values)
{
funcs.Add(()=>item);
}
foreach (var item in funcs)
{
Console.WriteLine(item());
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix