【发布时间】:2014-07-16 14:19:26
【问题描述】:
在使用 Linq 时,我偶然发现了以下表达式:
bool biggerThan10Exists = numbers.Any(n => n > 10);
Any 的定义如下:
public static bool Any<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
Func 的定义如下:
public delegate TResult Func<in T, out TResult>(
T arg
)
因此,如果 Any 需要一个 Func,它需要传递 返回 int 的委托,我怎么能传递一个 lambda 表达式在我看来是 void 委托的定义,即
n => n > 10
虽然我期待
n => return n > 10
我很确定我显然在这里遗漏了一些东西,但是什么?
【问题讨论】:
-
当
=>后面的内容是一个表达式时,暗示了“返回”。事实上,最初你根本不能在 lambda 的主体中合法地使用return。 -
return 语句不是唯一隐含的;几乎一切都是。唯一没有暗示的是参数名称和方法体。这个视频解释得很好:youtube.com/…