如何使用匿名方法返回值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

这是失败的

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

带着错误

无法将lambda表达式转换为“string”类型,因为它不是委托类型

这个错误意味着什么?我如何解决它?

提问于
用户回答回答于

这里的问题是,你已经定义了一个匿名方法,它返回一个string但试图直接将它分配给一个string。这是一个表达式,当被调用时产生string它不是直接的a string。它需要分配给兼容的委托类型。在这种情况下,最简单的选择是Func<string>

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

这可以通过一点点转换或使用委托构造函数来建立lambda的类型,然后调用。

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

注意:这两个样本都可以缩短到缺少表达式的表单 { return ... }

Func<string> temp = () => "test";
string temp = ((Func<string>)(() => "test"))();
string temp = new Func<string>(() => "test")();
用户回答回答于

你正试图将函数委托分配给字符串类型。尝试这个:

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

你现在可以执行此功能:

string s = temp();

“s”变量现在将具有“测试”值。

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券