C#怎么使用Lambda表达式 C# Lambda表达式语法教程

畫卷琴夢
发布: 2025-12-15 17:24:08
原创
617人浏览过
Lambda表达式是C#中创建匿名函数的语法糖,用于委托、事件、LINQ等场景,基本形式为“参数 => 表达式或语句块”,编译器依上下文推断为Func或Action等委托类型。

c#怎么使用lambda表达式 c# lambda表达式语法教程

在C#中,Lambda表达式是一种简洁写法,用来创建匿名函数(即没有名字的函数),常用于委托、事件、LINQ查询和集合操作。它不是独立语法,而是编译器支持的“语法糖”,最终会被转换为委托实例或表达式树。

基本语法结构

Lambda表达式的通用形式是:参数 => 表达式或语句块。左边是参数列表,右边是函数体。

  • 无参数:() => Console.WriteLine("Hello")
  • 单个参数:x => x * 2(括号可省略)
  • 多个参数:(a, b) => a + b(括号不可省)
  • 带语句块:(x, y) => { return x > y ? x : y; }(必须用大括号和return)

常见使用场景

Lambda最常用在需要传入一个简单逻辑的地方,比如List.Find、Where、OrderBy等方法。

  • 过滤数据:numbers.Where(n => n % 2 == 0)
  • 查找对象:users.FirstOrDefault(u => u.Age >= 18 && u.Name.StartsWith("A"))
  • 排序:products.OrderBy(p => p.Price).ThenBy(p => p.Name)
  • 作为事件处理:button.Click += (s, e) => MessageBox.Show("Clicked!");

与委托类型的关系

Lambda表达式本身没有类型,但编译器会根据上下文推断出对应委托类型,如FuncAction

Visla
Visla

AI视频生成器,快速轻松地将您的想法转化为视觉上令人惊叹的视频。

Visla 100
查看详情 Visla
  • Func:接收int,返回bool → x => x > 0
  • Action:接收string,无返回值 → s => Console.WriteLine(s)
  • 不能直接赋值给var:var f = x => x + 1; ❌(类型不明确)→ 应显式声明Func或用委托变量

注意事项和小技巧

写Lambda时要注意作用域、闭包和性能影响。

  • 捕获外部变量要小心:循环中用i => Console.WriteLine(i)可能输出相同值(建议在循环内复制变量)
  • 复杂逻辑别硬塞进Lambda:可读性差,建议提取成命名方法
  • 调试时Lambda里设断点没问题,VS能正常进入
  • EF Core中Lambda会被转成SQL,所以只能用支持的表达式(如不能调用自定义方法)

基本上就这些。掌握参数写法、结合LINQ用熟、理解委托推断,就能高效使用Lambda了。

以上就是C#怎么使用Lambda表达式 C# Lambda表达式语法教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号