C#Lambda函数:返回数据

Dre*_*w R 13 .net c# lambda delegates anonymous-function

我是否遗漏了某些内容,或者无法从lambda函数返回值,例如..

Object test = () => { return new Object(); };

要么

string test = () => { return "hello"; };

我得到一个构建错误"无法将lambda表达式转换为'string'类型,因为它不是委托类型".

这就像这个语法分配lambda而不是lambda的结果,我没想到.我可以通过将函数分配给Func并按名称调用它来实现所需的功能,但这是唯一的方法吗?

请不要"为什么你需要这样做?" 关于我的例子.

提前致谢!

Kon*_*lph 33

这是可能的,但你正在尝试将lambda分配给a string.- 你需要调用 lambda:

Func<string> f = () => { return "hello"; };
string test = f();
Run Code Online (Sandbox Code Playgroud)

错误消息实际上说明了一切:

无法将lambda表达式转换为'string'类型

......这正是这里的问题.

如果你想调用lambda内联 - 但是真的:为什么? - 你也可以这样做,你只需要首先明确地将它变成一个委托:

string test = (new Func<string>(() => { return "hello"; }))();
Run Code Online (Sandbox Code Playgroud)