这个lambda函数如何工作?

TOP*_*KEK 1 c# lambda c#-4.0

我有这个签名的功能:

public DeleteCommand(IService service, 
    Func<bool> canExecute, Action<ContactModel> deleted)
Run Code Online (Sandbox Code Playgroud)

以及调用它的代码:

Delete = new DeleteCommand(
                Service, 
                ()=>CanDelete,
Run Code Online (Sandbox Code Playgroud)

我不明白()=>CanDelete究竟是什么意思.作为一个Func<bool>它必须返回一些价值.

()=> 
Run Code Online (Sandbox Code Playgroud)

意味着它没有输入参数.但是返回的价值是多少?为什么return lambda中没有?有点像()=> return CanDelete

Ser*_*rvy 9

表达式lambda,就是你所展示的,返回表达式后面的表达式的结果=>.该return关键字是推断,实际上不能明确列入.声明拉姆达(这是形式的() => { someStatements;})并不能推断出一个返回值,而且需要一个明确的return,如果它不是void.

  • 或者,换句话说(希望帮助澄清),`()=> CanDelete`表示`()=> {return CanDelete; }`. (2认同)