C#怎么使用Lambda表达式 C#匿名函数使用方法

来源:这里教程网 时间:2026-02-21 17:35:19 作者:

在C#中,Lambda表达式是编写匿名函数最简洁、最常用的方式,本质是编译器帮你生成委托实例或表达式树,用

=>
(“goes to”)语法快速定义内联方法。

Lambda表达式基本写法

语法结构为:

(参数列表) => 表达式或语句块
。参数类型通常可省略(由编译器推断),单个参数时括号也可省略。

无参 + 单表达式:`() => Console.WriteLine("Hello")` 一个参数 + 省略括号:`x => x * 2`(等价于 `(int x) => x * 2`) 多个参数:`(x, y) => x + y` 多语句块:`(name, age) => { Console.WriteLine(name); return age > 18; }`(必须用花括号和 return)

常用于委托和事件处理

Lambda让注册回调变得非常轻量,尤其配合

Action
Func
等泛型委托使用。

作为
Action
:`List.ForEach(x => Console.Write(x + ", "))`
作为
Func<t bool></t>
过滤:`var adults = people.Where(p => p.Age >= 18)`
绑定事件:`button.Click += (s, e) => MessageBox.Show("Clicked!");`

与LINQ查询高度配合

几乎所有 LINQ 方法(

Where
Select
OrderBy
Any
等)都接受 Lambda 作谓词或投影函数,代码直观易读。

`var names = users.Select(u => u.Name).ToList();` `bool hasAdmin = roles.Any(r => r == "Admin");` `var sorted = products.OrderBy(p => p.Price).ThenByDescending(p => p.Stock);`

注意捕获外部变量(闭包)

Lambda 可访问并“捕获”定义它的作用域中的局部变量,但要注意生命周期问题——变量会延长到委托存在为止。

常见陷阱:循环中直接用循环变量 `i`,所有 Lambda 共享同一个 `i`,最终可能全取到最后值 解决办法:在循环内创建副本,如 `for (int i = 0; i copy); }`

基本上就这些。Lambda 不是黑魔法,它只是 C# 为简化委托写法提供的语法糖,用熟了会让集合操作、异步回调、事件绑定变得干净又高效。

相关推荐