消息框中显示的 Lambda 匿名方法

本文关键字:方法 Lambda 显示 消息 | 更新日期: 2023-09-27 18:35:25

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

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

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

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

消息框中显示的 Lambda 匿名方法

你的代码段正在做的是定义一个返回字符串(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());