【C#进阶九】C#中的Lambda表达式

本文介绍了C#中的Lambda表达式及其应用场景,包括表达式的不同形式、输入参数的定义及类型推理规则等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Lambda 表达式

"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式。优点是Lambda简化了匿名委托的使用,减少开发中需要编写的代码量。

Lambda 表达式的形式:

//表达式为其主体
(input-parameters) => expression
    //表达式 lambda 的主体可以包含方法调用。
//语句块作为其主体
(input-parameters) => { <sequence-of-statements> }
	//语句 lambda 的主体可以包含任意数量的语句;但是,实际上通常不会多于两个或三个。

可在需要委托类型或表达式树的实例的任何代码中使用 lambda 表达式

例如:

Func<int, int> square = x => x * x;
Console.WriteLine(square(5));
//输出:25

int[] numbers = { 2, 3, 4, 5 };
var squaredNumbers = numbers.Select(x => x * x);
Console.WriteLine(string.Join(" ", squaredNumbers));
// Output:
// 4 9 16 25

2. lambda 表达式的输入参数

//如果 lambda 表达式不返回值,则可以将其转换为 Action 委托类型之一;否则,可将其转换为 Func 委托类型之一。
//无输入,也不返回值
Action line = () => Console.WriteLine();

//一个参数,有返回值,Func中第一个参数为输入参数的类型,第二个参数为输出参数的类型
Func<double, double> cube = x => x * x * x;

//编译器无法推断输入参数的类型,可以显式指定类型
Func<int, string, bool> isTooLong = (int x, string s) => s.Length > x;

3.Lambda 表达式中的类型推理

//如果要查询 IEnumerable<Customer>,则输入变量将被推断为 Customer 对象
customers.Where(c => c.City == "London");

//lambda 类型推理的一般规则如下:
//    Lambda 包含的参数数量必须与委托类型包含的参数数量相同。
//    Lambda 中的每个输入参数必须都能够隐式转换为其对应的委托参数。
//    Lambda 的返回值(如果有)必须能够隐式转换为委托的返回类型。

有关于Lambda更多知识请看参考资料:

Lambda 表达式 - C# 引用 | Microsoft Learn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能建造硕博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值