没有“返回”的C#lambda如何工作?

Mis*_*tyD 1 c# lambda

我偶尔会遇到这样的陈述

school.Where(s => s.name == "foo") 
Run Code Online (Sandbox Code Playgroud)

现在我知道这是一个lambda,我认为我对lambda很满意。我刚开始C#,所以我确实有这个问题。在声明中

s => s.name == "foo"
Run Code Online (Sandbox Code Playgroud)

如何完成评估结果以确定是非。我没有看到退货声明吗?我所看到的只是lambda主体中的比较操作,什么也没有返回。谁能向我解释一下。

Sam*_*nen 9

这种形式的返回是隐式的。lambda返回表达式返回的任何内容。您也可以这样写:

s => { return s.name == "foo"; }
Run Code Online (Sandbox Code Playgroud)

之所以不需要简写形式的返回,是因为这是语言的设计方式。它使事情变得简短而好用,而不是迫使开发人员编写不必要的代码。