15

我是否遗漏了什么,或者不可能从 lambda 函数返回一个值,例如..

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

或者

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

我收到构建错误“无法将 lambda 表达式转换为类型‘字符串’,因为它不是委托类型”。

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

请不要“为什么需要这样做?” 关于我的例子。

提前致谢!

4

1 回答 1

35

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

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

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

无法将 lambda 表达式转换为类型“字符串”

……这正是这里的问题。

如果你想调用 lambda inline - 但实际上:为什么?– 你也可以这样做,你只需要先明确地把它变成一个委托:

string test = (new Func<string>(() => { return "hello"; }))();
于 2013-03-20T13:49:14.713 回答