首页 文章

C#Lambda函数:返回数据

提问于
浏览
13

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

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

要么

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

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

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

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

提前致谢!

1 回答

  • 32

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

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

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

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

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

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

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

相关问题