【问题标题】:Lambda anonymous method in messagebox.showmessagebox.show 中的 Lambda 匿名方法
【发布时间】:2014-12-28 19:22:26
【问题描述】:

我只是在玩匿名方法,我想知道为什么这段代码无法编译。 Messagebox show 需要一个字符串,我正在尝试返回一个字符串。

            MessageBox.Show(() => 
            {
                if (button1.Text == "button1")
                {
                   return "ok";
                }
                else
                {
                   return "not button1 text";
                }
            });

无法将 lambda 表达式转换为字符串类型,因为它不是委托类型。

有人可以解释为什么吗?我错过了演员表吗?

【问题讨论】:

  • 你不应该使用 asp.net 标签,因为这篇文章与 ASP .NET 无关,MessageBox.Show 是一种 Winforms 方法。一个 lambda 表达式标签对你有好处。

标签: c# winforms lambda


【解决方案1】:

您的代码正在做的是定义一个返回字符串 (Func<string>) 的 Func。然后你尝试将Func<string> 作为参数传递给MessageBox.Show。请注意 MessageBox.Show 不接受 Func<string> 类型,它接受 string 所以你不能通过这种方式将 lamda 表达式传递给它)。但你可以这样做:

Func<string> yourFunc = () => 
            {
                if (button1.Text == "button1")
                {
                   return "ok";
                }
                else
                {
                   return "not button1 text";
                }
            };

MessageBox.Show(yourFunc());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 2012-02-23
    • 1970-01-01
    • 2011-06-23
    • 2011-02-08
    • 2016-10-11
    • 2013-04-24
    • 2010-09-08
    相关资源
    最近更新 更多