C# Lambda 表达式 =>

本文深入讲解了Lambda表达式的基础概念及应用,包括如何作为参数传递给方法或通过方法调用返回,广泛应用于异步方法、LINQ查询及表达式树等场景。文中详细介绍了表达式lambda和语句lambda的语法及区别。

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

Lambda 表达式是作为对象处理的代码块(表达式或语句块)。 它可作为参数传递给方法,也可通过方法调用返回。 Lambda 表达式广泛用于:

  • 将要执行的代码传递给异步方法,例如Run(Action)

  • 编写LINQ查询表达式

  • 创建表达式树

Lambda 表达式是可以表示为委托的代码,或者表示为表达式树的代码,它所表示的表达式树可以编译为委托。 Lambda 表达式的特定委托类型取决于其参数和返回值。 不返回值的 Lambda 表达式对应于 Action 委托,具体取决于其参数数量。 返回值的 Lambda 表达式对应于 Func 委托,具体取决于其参数数量。例如,有 2 个参数但不返回值的 Lambda 表达式对应于Action<T1,T2>委托。 有 1 个参数并返回值的 Lambda 表达式对应于Func<T,TResult>委托。

Lambda 表达式使用 lambda声明运算符=> 从其可执行代码中分离 lambda 参数列表。 若要创建 Lambda 表达式,需要在 lambda 运算符左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。 例如,单行 Lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方值。 如下面的示例所示,你可以将此表达式分配给委托类型:

Func<int, int> square = x => x * x; Console.WriteLine(square(25));

或者,可以将其直接作为方法参数传递:

static void Main()

{

ShowValue(x => x + x);

}

private static void ShowValue(Func<int,int> op)

{

for (int ctr = 1; ctr <= 5; ctr++)

Console.WriteLine("{0} + {0} = {1}", ctr, op(ctr));

}

表达式 lambda:

表达式位于 => 运算符右侧的 Lambda 表达式称为“表达式 lambda”。 表达式 lambda 广泛用于表达式树的构造。 

表达式 lambda 会返回表达式的结果,并采用以下基本形式:(input parameters) => expression

仅当 lambda 只有一个输入参数时,括号才是可选的;否则括号是必需的。 使用空括号指定零个输入参数:

Action line = () => Console.WriteLine();

语句 lambda

语句 lambda 与表达式 lambda 表达式类似,只是语句括在大括号中:

(input parameters) => { statement; }

语句 lambda 的主体可以包含任意数量的语句;但是,实际上通常不会多于两个或三个

delegate void TestDelegate(string s);

public static void Main()

{

TestDelegate test = n => { string s = n + " " + "World"; Console.WriteLine(s); };

test("Hello");

}

像匿名方法一样,语句 lambda 也不能用于创建表达式目录树。

异步 lambda


public static void Main()

{

Begin().Wait();

}

private static async Task Begin()

{

for (int ctr = 2; ctr <= 5; ctr++)

{

var result = await ShowSquares(ctr);

Console.WriteLine("{0} * {0} = {1}", ctr, result);

}

}

private static async Task<int> ShowSquares(int number)

{

return await Task.Factory.StartNew( x => (int)x * (int)x, number);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木士易

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

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

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

打赏作者

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

抵扣说明:

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

余额充值